if aa <> nil then Dispose(aa);
if bb <> nil then bb := nil; //(这样写就可以)
你bb也指向aa了 aa释放后 bb也没了
忘记了Dispose释放的时候 只是标记这部分内存可以再用来被 new 等函数再分配,并不是把从系统申请到的内存归还给操作系统,只在程序结束时,才全部释放给操作系统。
我按照你的建议重新修改了程序,但还是出现同样的问题。
谢谢,让我明白了一些东西,但我还想知道,if bb <> nil then bb := nil; //(这样写就可以)好像没有必要了,这语句有什么作用吗?
虽然bb指针指向的地址没值了,但他还指向了一个不可用的地址,因为后续如果有其他操作都会用是否等于nil或者是是否有引用来判断当前指针是否可操作的,所以一般把“undefined ”这种的都赋个nil值,
Use Dispose in Delphi code to free the memory which a pointer addresses. After a call to Dispose, the value of P is undefined and it is an error to reference P.