delphi - 我应该如何在 Delphi 7 析构函数中释放对象数组?

标签 delphi memory-leaks

假设我的 Delphi 类如下所示:

interface
type

    TMySubInfo = class
    public
        Name : string;
        Date : TDateTime;
        Age  : Integer;
    end;

    TMyInfo = class
    public
        Name : string;
        SubInfo : array of TMySubInfo;
        destructor Destroy; override;
    end;

implementation

    destructor TMyInfo.Destroy;
    begin
      // hmmm..
    end;

end.

为了正确清理,析构函数中应该包含什么?执行 SetLength(SubInfo,0) 就足够了,还是需要循环并释放每个 TMySubInfo?我需要做任何事情吗?

最佳答案

您需要循环并释放每个创建的对象。

您必须知道,声明 TMySubInfo 数组实际上并不会创建对象。您必须稍后创建它们。

我会使用 TList 来代替更动态的方法。您甚至可以使用 TObjectList,它可以在列表被释放时释放其所有项目。

关于delphi - 我应该如何在 Delphi 7 析构函数中释放对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544075/

相关文章:

delphi - 有没有一种简单的方法来检测*任何*(和所有)用户事件?

delphi - Delphi 7 应用程序中 Aero Glass 的问题

forms - 不使用 VCL 创建表单

performance - 是什么导致我的 Wavefront Obj 解析器消耗的内存比输入多 10 倍?

c - 我什么时候应该释放 C 循环中使用的内存?

linux - alsa - 内存泄漏?

windows - "Out of memory"带有简单的 Win32::Unicode::File readline 循环和 Strawberry Perl

performance - 如何使用 Delphi 创建 Windows 性能计数器?

delphi - 如何获得视觉上不同的颜色列表?

Android 分配跟踪器与 Mapview 的理解