[過去ログ] C++相談室 part164 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
221: (アウアウウー Sadd-Xx8j) 2023/06/16(金)15:46 ID:/DJegtL/a(1) AAS
ほんそれ
回答終了してんのにちんこかゆい
222: (スフッ Sd33-pDI4) 2023/06/16(金)15:49 ID:YNpYq5+wd(1) AAS
>>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
223(2): (ワッチョイ e95f-2rqm) 2023/06/16(金)16:09 ID:qgM8i0iT0(1) AAS
ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。
224(1): (ワッチョイ 219b-q0yD) 2023/06/16(金)16:49 ID:ybGonaVE0(1) AAS
reset要らないとか言ってる奴らは結局何なん
225(1): (テテンテンテン MMeb-jufV) 2023/06/16(金)19:32 ID:yx9ngvFiM(1) AAS
>>224
結論は>211にまとめといた。
resetは要らん。
226(1): (ワッチョイ 92dc-gfWY) 2023/06/17(土)08:56 ID:3MnK6eEg0(1) AAS
>>223
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててωωω
227(1): (テテンテンテン MM96-Axrn) 2023/06/17(土)10:36 ID:koF9X0k9M(1) AAS
>>226
「大きいメモリが割り当てられてるオブジェクトを使用後に破棄したい」なら
>185か>187。
>187はunique ptrの置き場所と解放タイミングによって解放の仕方が違って、自動変数にして関数やスコープから抜けるタイミングで解放するなら手動操作不要、vectorなどのヒープに置くとかスコープの終わり前に解放したいとかならreset()とかvectorの要素削除とかで手動解放。
いずれにしても、自動変数に巨大インスタンスを考え無しに置くのは悪手で、そのオブジェクトがスタックに巨大データを置かない(ヒープ等に置く)ことを確認してからにしたほうがいい。
228: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:30 ID:S+64vkUJ0(1/4) AAS
>>216
vectorのcapacityはそのvectorが氏ぬかcapacity縮小アクションが生じない限りvector固有に占有されるから
capacity(のうちsize()を超える分)と OS側からみた空きメモリはまた別でケテーイ……
一方malloc()がOSからゲットしたメモリをOSに返さずにいるのはOS側からみた空きメモリではないにしろ
同一プロセス内の他のオブジェクトの構築に使えるのだから空きメモリのうち
これすらもOSに返したいということならこの流れの中で現状答えがでていないキモヌ
229: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:31 ID:S+64vkUJ0(2/4) AAS
まあしいて言えばプロセスを一旦exitして再立ち上げ?
230: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:45 ID:S+64vkUJ0(3/4) AAS
普通に作ったら(コードで明示的に直接OSのAPIでメモリを分捕って解放とかしない限りは
プロセスのprivate bytesはプロセスが氏ぬまで増えることはあっても減ることは無いという印象、
231(2): (ワッチョイ 7d9b-trtU) 2023/06/17(土)16:27 ID:5e+acAEX0(1) AAS
>>225
スマンまじで理解できないのだけど、なぜvectorに限った話をしてるの?
232: (テテンテンテン MM96-Axrn) 2023/06/17(土)19:22 ID:mYwWSuEFM(1) AAS
>>231
巨大インスタンスは>227
233: (ワッチョイ d9ab-trtU) 2023/06/17(土)19:29 ID:HtrmHz3i0(1) AAS
回答者のレベル低いな~~~
こんだけダラダラ続けて、結局質問者>>182が>>190で早々に結論づけてることをリピートしてるだけw
234: (ワッチョイ 69f0-J7ro) 2023/06/17(土)19:54 ID:9hSxsWrs0(1) AAS
アロケータ気に入らないなら自作くらいしろよポンコツ
なにもかもSTLに頼りやがってそれでPGやってるつもりになるなよ
235: (ワッチョイ 6128-l8k0) 2023/06/17(土)20:19 ID:S+64vkUJ0(4/4) AAS
人類には早すぎた話題また……
236: (オイコラミネオ MM91-L1I+) 2023/06/17(土)23:14 ID:H9lc23A5M(1) AAS
次世代の人は便利に使いこなしてるかより簡素になった仕組みを使うのだろう
237(1): (ワッチョイ 655f-rdTE) 2023/06/18(日)03:00 ID:GIMFAM+a0(1) AAS
>>231
コンテナの種類を問わない一般的な方法なんてものはないからじゃないですかね
238(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)21:04 ID:VwYqKwPk0(1/4) AAS
以下のコードでaccumulateのとこでコンパイルエラーが起こります
何故か分かります?
#include <iostream>
#include <array>
#include <deque>
#include <exception>
#include <numeric>
省19
239(1): (ワッチョイ 515f-C6j3) 2023/06/18(日)21:45 ID:UCXMUPHB0(1) AAS
>>238 エラーメッセージ見ればたぶん分かる。
240: (ワッチョイ 8101-1tDD) 2023/06/18(日)21:48 ID:VwYqKwPk0(2/4) AAS
>>239
レス有難うございます
まず訂正
-accumulate
+std::accumulate
全部は貼れないですけど大事そうなところ
In file included from /usr/include/c++/12/numeric:62,
省5
241(1): (ワッチョイ 9e81-L1I+) 2023/06/18(日)23:15 ID:w3/xAOT+0(1) AAS
ADLでoperator+が見つからないからかな?
struct Vector : std::array <double, 3> {};
みたいに定義したらいけるのでは
242(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)23:20 ID:VwYqKwPk0(3/4) AAS
>>241
>struct Vector : std::array <double, 3> {};
>みたいに定義したらいけるのでは
通りますね
どういうこと?
243(1): (ワッチョイ 32fb-9xvA) 2023/06/18(日)23:24 ID:bX3uBTIT0(1/2) AAS
std::accumulateが14行目で定義したoperator+を見つけれてないのが原因っぽい。
std::accumulateの第4引数に
[](const Vector& v1, const Vector& v2){ return v1+v2;}
を追加してやるとコンパイルは通る。
14行目のoperator+をstd名前空間に入れてやれば動くにゃ動くけど色々マズいので(調査する分にはいいけど)最終的な解答にはならないかな
244(1): (ワッチョイ 32fb-9xvA) 2023/06/18(日)23:29 ID:bX3uBTIT0(2/2) AAS
>>242
たぶんC++コンパイラはoperator+の候補を検索するときに
Vector( = std::array<double, 3>)と同じ名前空間にあるものしか検索しない
Vectorのクラス定義そのものがグローバル名前空間にあるなら14行目のoperator+を見つけられるけど、
今はVectorの正体はstd::array<...>なのでstd名前空間しか検索しないんだと思う
245(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)23:39 ID:VwYqKwPk0(4/4) AAS
>>243,244
なるほど解説頂きまして有難うございます
グローバルスコープはどっからでも見えて良さそうなものの
何でグローバルスコープの関数を探さないですかね?
246(1): (ワッチョイ a901-UvLK) 2023/06/18(日)23:48 ID:EGGkT3O00(1) AAS
独自のメンバ変数を持たないのなら継承してしまうのも手ではある(ただしコンストラクタやarrayを受け取るキャスト用コンストラクタとか書く必要が出ると思うけど)
ただ、そもそもカスタマイズしたり自分の用途に本当に使いやすいものを作りたいなら、ちゃんと自分で全部書いた方がいいと思うよ
247(1): (ワッチョイ b110-lSMs) 2023/06/19(月)00:42 ID:2lgIrH6A0(1) AAS
>>245
std::accumlateの定義内からだと、その下の方(ユーザーコード)で定義されてるoperator+は見えてないので、グローバル名前空間の探索では見つからない
248(1): (ワッチョイ 8101-1tDD) 2023/06/19(月)00:52 ID:Q4g6N6uX0(1/3) AAS
>>247
std::accumlateが定義されているnumericをincludeする前に
以下のようにグローバルスコープにプロトタイプを置いても
同じようにoperator+が見えてないとエラーが出ます
using Vector = std::array <double, 3>;
Vector operator + (const Vector &lhs, const Vector &rhs);
#include <numeric>
249(1): (ワッチョイ a901-UvLK) 2023/06/19(月)03:40 ID:RYn53SnN0(1/2) AAS
accumlateは関数テンプレートだから実体化される時点でoperator+が見えてりゃOKのはず
言われてる通りADLで対象外なのが問題
250(1): (ワッチョイ 256b-trtU) 2023/06/19(月)05:38 ID:JAsvvATP0(1) AAS
>>237
(スマート)ポインタで持って要らなくなったら明示的にリリースする方法はあらゆるコンテナに対して使えるよね?笑
251(1): (ワッチョイ f59c-Axrn) 2023/06/19(月)08:48 ID:KLBRX38t0(1) AAS
>>250
>>223
252: (ワッチョイ 8101-1tDD) 2023/06/19(月)09:20 ID:Q4g6N6uX0(2/3) AAS
>>249
有難うございます
グローバルスコープに定義した関数が見えないのは
どうしてなんでしょうかね?
それでは全然グローバルじゃないような気がするのですが
規格を決めるときに何か意図があったのでしょうかね?
253(1): (ワッチョイ a901-UvLK) 2023/06/19(月)10:39 ID:RYn53SnN0(2/2) AAS
そもそもが名前空間内(よその演算子と混ざらないように)にある演算子オーバーロードを、外部からでも引数が合えば使えるように(std::operator+(a, b)とか書かないでいいように)するためのルールらしいから
外部の演算子見に行くのは目的に合わんのじゃね
std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、あまりよろしくないやり方しようとしてると考えた方がいい
(だから>>246のように書いた、継承したら一応arrayではなくちゃんとVectorクラスに対する演算子だから通る)
254: (ワッチョイ 8101-1tDD) 2023/06/19(月)11:53 ID:Q4g6N6uX0(3/3) AAS
>>253
>std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、
>あまりよろしくないやり方しようとしてると考えた方がいい
なるほど
たぶんこういう考え方なんでしょうね
255: (ワッチョイ 5efb-+wmN) 2023/06/19(月)12:20 ID:4PINPeBN0(1) AAS
つまりvector<int>を使いなさいということ
256: (ワッチョイ 7d9b-trtU) 2023/06/19(月)12:21 ID:wGtx/iKL0(1) AAS
>>251
安価ミス
257: (アウアウウー Sacd-9XmN) 2023/06/20(火)00:04 ID:YSi65ASja(1) AAS
実引数依存の名前探索、Argument-Dependent Lookup (ADL)は、
Koenig lookup とも言う
「Cプログラミングの落とし穴」の著者、
Koenigが、C++ に入れる事を推奨した
ADLを知っているなら、かなりのプロと言える
258: (ワッチョイ 8101-1tDD) 2023/06/20(火)00:18 ID:vGfe0Eju0(1/7) AAS
勉強になります
259: (アウアウウー Sacd-9XmN) 2023/06/20(火)02:12 ID:1vctBLGTa(1) AAS
演算子のオーバーロードなら、フレンド関数とか?
非メンバの演算子オーバーロード | Programming Place Plus C++編【言語解説】 第35章
外部リンク[html]:programming-place.net
260(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)10:05 ID:IIzrqfbq0(1/5) AAS
状況を簡略化するとこう。
namespace ns {
struct foo {};
template <class T>
void bar(const T&) {
T() + T();
} };
省15
261(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)10:53 ID:vGfe0Eju0(2/7) AAS
>>260
>だから順序を変えれば通る。
最近手元のg++を更新しまして10.2.1 -> 12.2.0になったんですが
前者のケースが通らなくなりまして疑問に思っていたところでした
10.2.1は寛容で両方とも通るけどC++的には後者のみ通るのが正しい?
262: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)11:41 ID:IIzrqfbq0(2/5) AAS
>>261
前者はたぶん未定義かつ診断不要な状況なのでエラーを検出せずに通すのも正しい挙動で
プログラマがそういう状況を作ってしまうのが仕様に反する (というか結果が保証されない) という解釈になると思う。
263: (ワッチョイ 8101-1tDD) 2023/06/20(火)13:36 ID:vGfe0Eju0(3/7) AAS
なるほどー
有難うございます
264(2): (JP 0H91-FhUT) 2023/06/20(火)21:39 ID:Pk8V/jejH(1/4) AAS
template<typename Callback>
void func(Callback cb)
{
//cb(1); // A
//cb(1,2);// B
}
void f1(int){}
省4
265: (ワッチョイ 515f-9XmN) 2023/06/20(火)22:18 ID:Cuq1USIJ0(1) AAS
is_invocableでおk
266(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:21 ID:IIzrqfbq0(3/5) AAS
>>264
渡されたコールバック関数の引数の数によって区別するってこと?
素朴な方法だとオーバーロードするのが手っ取り早いと思う。
void func(void (*cb)(int)) {
cb(1);
}
void func(void (*cb)(int, int)) {
省8
267: (ワッチョイ 8101-1tDD) 2023/06/20(火)22:27 ID:vGfe0Eju0(4/7) AAS
>>264
template<typename Callback> void func(Callback cb);
template <> void func(void (*cb) (int))
{
(*cb)(1); // A
}
template <> void func(void (*cb) (int, int))
省6
268: (ワッチョイ 8101-1tDD) 2023/06/20(火)22:29 ID:vGfe0Eju0(5/7) AAS
templateが意味ないね
269(4): (ワッチョイ 127f-L1I+) 2023/06/20(火)22:39 ID:ui/rWsWf0(1) AAS
265が言うようにis_invocable使うとこんな感じ?
template<typename Callback>
void func(Callback cb)
{
if constexpr (std::is_invocable_v<Callback, int>) {
cb(1);
} else if constexpr (std::is_invocable_v<Callback, int, int>) {
省3
270(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)22:41 ID:vGfe0Eju0(6/7) AAS
>>269
これって関係ないif節はコンパイル時に消えるの?
271(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:43 ID:IIzrqfbq0(4/5) AAS
>>270
消えるよ。
272(1): (JP 0H91-FhUT) 2023/06/20(火)22:44 ID:Pk8V/jejH(2/4) AAS
>>269
ありがとうございます。
gcc 13.1.0 でc++17でうまくいきました。
後出しで申し訳ありませんが、C++14でかけませんか?
273(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)22:47 ID:vGfe0Eju0(7/7) AAS
>>269,271
これは知らんかった
勉強になるなぁ
274(1): (JP 0H91-FhUT) 2023/06/20(火)22:48 ID:Pk8V/jejH(3/4) AAS
>>269
まさにこれをやりたかったです。
template<typename Callback>
void func(Callback cb)
{
// こことか
if constexpr (std::is_invocable_v<Callback, int>) {
省6
275(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:59 ID:IIzrqfbq0(5/5) AAS
>>272 >>274
ひとつの関数テンプレート中でやりたいってこと?
if constexpr が導入される前だとオーバーロードなり特殊化なりで
別の関数として分離しないと書けないと思う。
is_invocable に相当するものは自分で書こうと思えば書けるが
if constexpr は言語のコアの機能だからどうにもならんし……。
276: (JP 0H91-FhUT) 2023/06/20(火)23:14 ID:Pk8V/jejH(4/4) AAS
>>275
情報ありがとうございます
ご掲示いただいたコードで勉強になりました。
277: (ワッチョイ 69f0-J7ro) 2023/06/20(火)23:42 ID:zCL4VLm70(1/2) AAS
>>273
ザッツcostexprマジック
278: (ワッチョイ 69f0-J7ro) 2023/06/20(火)23:43 ID:zCL4VLm70(2/2) AAS
n抜けてたwコストがかかる演算なのは確かだけどw
constexprマジック!マジック!
279(2): (ワッチョイ 32fb-dYQK) 2023/06/21(水)00:07 ID:2lh42auf0(1/2) AAS
C++11のSFIANE地獄へようこそ
外部リンク:wandbox.org
template関数の実体化が1つだけ成功して、
他が失敗するように仕掛ければ呼び分けは可能。
ただ見ての通り相当面倒なことを書かなきゃならない。
280(1): (ワッチョイ 8101-1tDD) 2023/06/21(水)00:28 ID:CWKUsltc0(1/3) AAS
>>279
>>266と本質的に何が違うのか分からない
解説よろしく
(templateでやってることは無駄なのでは?)
281(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/21(水)00:41 ID:3HBFHOpK0(1/5) AAS
>>280
いや、 >>279 のほうがちょっと柔軟で使いやすい。
たとえば
void f3(long int, long int) {}
みたいなのを渡したとき >>266 ではエラーになる。
引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
厳密に int そのものでなければならないというのとでは制約の厳しさが違う。
282: (ワッチョイ 515f-9XmN) 2023/06/21(水)00:42 ID:LxMKpynY0(1) AAS
templateでやるのは質問者の与えた要件だな
宿題なんじゃね、しらんけど
283(1): (ワッチョイ 32fb-9xvA) 2023/06/21(水)00:52 ID:2lh42auf0(2/2) AAS
C++14にはif constexprが存在しないから
template使ったオーバーロードしか手段がない
質問者がC++14環境でって言ってたからこんなクソ面倒くさいことやれば一応できるっていう例示
284: (ワッチョイ 8101-1tDD) 2023/06/21(水)01:17 ID:CWKUsltc0(2/3) AAS
>>281,283
ありがとう
>引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと
>厳密に int そのものでなければならないというのとでは制約の厳しさが違う。
こういうことね
285(2): (ワッチョイ a901-UvLK) 2023/06/21(水)04:29 ID:IDPPhD2V0(1/3) AAS
>>260
あー本来グローバルも対象になるのか、適当こいてスマソ
だが>>248で質問者が言ってるように、元のコードで順序を変えてもダメなのよ
何故か考えてはちみつのコードを以下のようにしたら同様に通らなかった
namespace ns {
template <class T = int>
struct foo{};
省12
286: (ワッチョイ a901-UvLK) 2023/06/21(水)09:44 ID:IDPPhD2V0(2/3) AAS
あ、すまんfooがクラステンプレートになってるの直し忘れた(直しても同じだが)
287: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/21(水)10:22 ID:3HBFHOpK0(2/5) AAS
>>285
名前探索 (name lookup) は狭い名前空間から探索していって
合致する名前があればそれより外側に同名の関数があっても
オーバーロード解決に参加しない。
わかりやすい例で言えばメンバ関数は非メンバより優先されるし、
メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
void foo(void) {}
省9
288: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/21(水)10:34 ID:3HBFHOpK0(3/5) AAS
例をちょっと間違えたのでやりなおし。
void foo(int) {}
struct bar {
void baz(void) {
foo(1);
}
void foo(void) {}
省2
289: (ワッチョイ 8101-1tDD) 2023/06/21(水)11:00 ID:CWKUsltc0(3/3) AAS
g++更新にともない
自前ライブラリのビルドでエラーが出るようになって
悩んでたところを解説してくれてる
マジで凄い人達だな
290: (ワッチョイ a901-UvLK) 2023/06/21(水)11:31 ID:IDPPhD2V0(3/3) AAS
>メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど
291: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/21(水)12:13 ID:3HBFHOpK0(4/5) AAS
>>285 の例は using を使う形でも解決できる。 (設計意図によってはそれが妥当かどうかわからんけど。)
namespace ns {
struct foo {};
struct hoge {};
int operator+(const hoge& x, const hoge& y) { return 1; }
};
ns::foo operator+(const ns::foo& x, const ns::foo& y) { return ns::foo(); }
省9
292: (ワッチョイ ad10-fL0y) 2023/06/21(水)12:20 ID:s1sJDdcu0(1) AAS
C++って、こういう悪夢みたいなテクニックで溢れかえってるよなあ
RustやらPythonだのに人気が移るわけですよ
293: (テテンテンテン MM96-Axrn) 2023/06/21(水)12:23 ID:xjKiS8Z6M(1) AAS
記法でいうならNimがいいよ。
294: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/21(水)16:00 ID:3HBFHOpK0(5/5) AAS
カスタマイズされた関数が呼ばれるようにする綺麗な方法として customization point object という概念が近頃は導入されてる。
綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。
真似してみてもいいかもね。
より綺麗な方法が導入されるのはいいんだけど、
過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。
個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。
外部リンク:m.xkcd.com
295: (ワッチョイ c997-trtU) 2023/06/22(木)09:50 ID:+UOgHQ6A0(1) AAS
max RSS (メモリ総量) の取得ってWindowsとLinuxでポータブルな方法ないの?
296: (スプッッ Sd12-9xvA) 2023/06/22(木)10:07 ID:T+/An9G4d(1) AAS
C++標準ライブラリには無い
外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない
297: (ワッチョイ 196e-ljvc) 2023/06/22(木)10:35 ID:myrOOi5M0(1) AAS
std::uintptr_t get_available_memory();
とプロトタイプだけ用意して、定義を環境別に作るだな
内容的に割と単純な処理のはずで
環境別に用意といってもたいした工数にはなるめえよ
298: (アウアウウー Sacd-Hkv7) 2023/06/22(木)17:54 ID:Sn58Ngpoa(1) AAS
Nim いいよね
C++ 嫌になったら Nim においでおいで
299(4): (ワッチョイ c997-trtU) 2023/06/23(金)06:00 ID:AFPisFIg0(1) AAS
なんかのオブジェクトをポインタじゃなく実体として持ってるとして、それを delete するやり方ってないの?
たとえば std::vector A に対して
delete &A;
みたいな
300: (ワッチョイ 92ad-DGQF) 2023/06/23(金)06:14 ID:Dz+tkRpF0(1/2) AAS
「実体を持っている」と言うが「誰が」持っているかにもよる
グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる)
スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない
別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する
301: (ワッチョイ 92ad-DGQF) 2023/06/23(金)06:17 ID:Dz+tkRpF0(2/2) AAS
スコープ内でってのはローカル変数の意味で言ったの
上下前次1-新書関写板覧索設栞歴
あと 701 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s