Ste*_*eve 7 delphi memory-leaks memory-management delphi-7
一个非常简单的问题:
type
TMyRecord = Record
Int: Integer;
Str: String;
end;
PMyRecord = ^TMyRecord;
var
Data: PMyRecord;
begin
New(Data);
Data.Int := 42;
Data.Str := 'Test';
Dispose(Data);
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是,我在这里创建了一个内存泄漏(有String)吗?我打电话Data.Str := '';之前应该打电话Dispose吗
谢谢!
him*_*elf 12
不,Dispose正确释放记录中的字符串和动态数组,包括嵌套的数组.GetMem/ FreeMem(Data)确实会造成内存泄漏.
Dav*_*nan 10
如果在allocate/deallocate对之间引发异常,则会发生内存泄漏.保护他们是正常的:
New(Data);
Try
Data.Int := 42;
Data.Str := 'Test';
Finally
Dispose(Data);
End;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |