例えば、
p:pchar;
s:integer;
s:=100;
GetMem(p,s);
とした場合、sを保持していれば、pを使用後、
FreeMem(p,s);
とできます。
しかし、sを保持してなく、pだけの場合で
FreeMemを行いたい場合、
sを得る方法はあるのでしょうか?
s:=SizeMem(p);のような関数はあるのでしょうか?
お願いします。
FreeMemの2番目の引数は省略可能だよね。
逆に解放するサイズを指定するとどんな利点があるのか知りたい。
いろいろ調べてみましたが、FreeMemの第2引数って意味あるんですかね?
だれか知ってる方、私からもよろしくお願いします。
くららさん、monaaさん、ありがとうございます。
私の問い合わせ内容では、ご回答ただきました通りです。
私の問い合わせ方が間違っていました。すみません。
知りたかった事は、sを保持していない場合に、
サイズのみを知りたかったのです。
呼び出し元でGetMemで用意したポインタのみをサブルーチンに
渡していて、そのようなサブルーチンが沢山あります。
サブルーチンによって、その中でポインタのサイズを知る必要が
でてきました。
本当はサブルーチンにサイズの引数を追加してまわればよいのですが、
コーディングを間違えそうなので、出来れば、必要な個所だけ、
s:=SizeMem(p);のようなことを行いたかったのです。
お願いいたします。
レスがないようなので、経験はありませんが。
VirtualQueryがそれに相当します。
http://msdn.microsoft.com/ja-jp/library/cc430228.aspx
http://itpro.nikkeibp.co.jp/article/COLUMN/20070816/279802/?ST=develop&P=1
こりゃ必要に駆られないと手を出す気はしませんね…
こういうの(VirtualQuery)があるのですか。
ヘルプを読んでやってみます。
ダメそうなら、じみちに、サブルーチン引数に
サイズを付けてまわります。
monaaさんありがとうございました。
ツイート | ![]() |