ポインタについて、色々試しています。
----------------------------------------
var
param:string;
p:PString;
begin
new(p);
p^:=Edit1.Text;
param:=inttostr(integer(p));
//
ShowMessage(PString(strtoint(param))^);
dispose(p);//pを解放
end;
----------------------------------------
このように書き、最後にp=nilか調べるために、
ShowMessage(inttostr(integer(p)));
としたら、適当な数値が表示されます。
if not(p=nil) then ShowMessage('');
としても、空メッセージが表示され、
pが解放されていないようです。
何故、ポインタpは解放されないのでしょうか?
宜しくお願いしますn(_ _)n
DisposeでPStringは解放できないのでしょうか?
Disposeは参照先の内容を消すだけで、
ポインタは空の部分を参照し続けるわけですか?
> 何故、ポインタpは解放されないのでしょうか?
Dispose() はポインタが指す実体をメモリから解放するだけであり、そのポインタ
に nil を代入してくれるわけではありません。ポインタが nil かどうかとその
ポインタが指している(指していた)実体が解放されているかどうかは、別問題です。
わかりました
jokさん、有難う御座いましたn(_ _)n
Disposeを呼び出してもポインタは既に解放されたメモリを参照するわけですね
ツイート | ![]() |