您的位置:首页 > 编程语言 > Delphi

Delphi分配或释放内存失败的原因

2015-09-15 20:23 344 查看
并不是Delphi本身的问题,而是代码的问题。有时候,访问非法堆栈内存时,Delphi并不抛出异常,这样就导致部分堆内存结构破坏(链表结构破坏)。当自己使用的堆栈内存不多时,表现不出来错误;有时多加一个Format函数调用,里面调用SetString函数时,出现GetMem失败的问题(一直死循环,或者抛出异常),是因为已经分配到结构被破坏的内存链表。



procedure TForm1.Button1Click(Sender: TObject);

var

LArray: array[2..3] of Integer;

I: Integer;

begin

for I := 0 to 3 do

begin

LArray[I] := I;

end;

end;



上面的数组下标越界,但是却能够正常执行,这样就把内存结构破坏了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: