gpt4 book ai didi

delphi - 保证堆栈记录的初始化

转载 作者:行者123 更新时间:2023-12-03 15:00:08 25 4
gpt4 key购买 nike

我想修复已使用多年的记录 TMyValue 中的设计缺陷,并且我迫切希望在记录本身中修复它 - 以避免更改公共(public)接口(interface) - 并且不需要使用该记录的代码被改变。

本质上,该缺陷在于 TMyValue 在创建时必须初始化为零,否则对其调用 Clear 方法可能会导致崩溃。这是因为它包含一个字段,如果该指针非零,则该字段是指向动态分配内存的指针,并且 Clear 会导致动态内存被释放。

如果在堆栈上创建 TMyValue,则会出现问题,因为堆栈变量在创建时不会自动清零。

我想我可以使用记录构造函数将记录清零,但记录构造函数不能是无参数的。据推测,这意味着当在堆栈上创建记录时,您不能强制自动执行记录构造函数。

我怀疑我的问题的答案是“这是不可能的”。请证明我错了!

最佳答案

将虚拟字符串成员添加到您的记录中。由于字符串是托管类型,当记录进入范围时,它将被初始化为空字符串。

因此,在调用 Clear 方法时,请先测试虚拟字符串是否为空。当适合使用逻辑时,将字符串设置为一个值,以将记录标记为已初始化。

关于delphi - 保证堆栈记录的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com