type
TSomeRecord = Record
field1: integer;
field2: string;
field3: boolean;
End;
var
SomeRecord: TSomeRecord;
SomeRecAr: array of TSomeRecord;
这是我现有内容的最基本示例。由于我想重用SomeRecord
(某些字段保持为空,而不释放所有内容,则当我重新使用SomeRecord
时,有些字段会被带入,这显然是不希望的),因此我正在寻找一种同时释放所有字段的方法。我从string[255]
开始,使用了ZeroMemory()
,直到它开始泄漏内存,那是因为我切换到了string
。我仍然缺乏理解它为什么会出现问题的知识,但它似乎与它是动态的有关。我还在使用动态数组,所以我假设在任何动态数组上尝试使用ZeroMemory()
都会导致内存泄漏。浪费了一天的时间来解决这个问题。我认为在ZeroMemory()
之前对SomeRecord
或SomeRecAr
使用Finalize()
可以解决这个问题,但我不确定这是否是正确的方法,或者只是我自己有点傻。所以问题是:如何一次性释放所有内容?是否存在某个单一的过程可以完成这个任务,而我不知道?
另外,另一种选择是,我愿意接受如何以不同的方式实现这些记录的建议,这样我就不需要尝试复杂的释放内容。我已经查看了使用
New()
创建记录,然后用Dispose()
将其清除,但我不知道当变量在调用Dispose()
后未定义(而不是nil)时,它意味着什么。另外,我不知道某种类型的变量(SomeRecord:TSomeRecord
)与指向类型的变量(SomeRecord:^TSomeRecord
)之间的区别。我正在研究上述问题,除非有人能够快速解释,否则可能需要一些时间。