gpt4 book ai didi

delphi - Delphi中如何泄漏字符串

转载 作者:行者123 更新时间:2023-12-03 14:38:49 25 4
gpt4 key购买 nike

前几天我正在和一位同事谈论如果你真的把事情搞砸了如何在 Delphi 中泄漏字符串。默认情况下,字符串是引用计数并自动分配的,因此它们通常无需任何思考即可工作 - 不需要手动分配、大小计算或内存管理。

但我记得曾经读过,有一种方法可以直接泄漏字符串(无需将其包含在泄漏的对象中)。看起来它与通过引用传递字符串然后从它传递到的例程中从更大的范围访问它有关。是的,我知道这很模糊,这就是我在这里问这个问题的原因。

最佳答案

我不知道你第二段中的问题,但我被唱片中泄漏的字符串咬伤过一次。

如果对包含字符串的记录调用FillChar(),则会用零覆盖引用计数和动态分配的内存地址。除非字符串为空,否则会泄漏内存。解决这个问题的方法是在清除记录占用的内存之前调用Finalize()

不幸的是,当没有需要终结的记录成员时调用Finalize()会导致编译器提示。我碰巧注释掉了 Finalize() 调用以使提示静音,但后来当我向记录添加字符串成员时,我错过了取消注释该调用的操作,因此引入了泄漏。幸运的是,我通常在 Debug模式下以最详细和最偏执的设置使用 FastMM 内存管理器,因此泄漏并没有被忽视。

编译器提示可能不是一件好事,恕我直言,如果不需要的话,默默地省略Finalize()调用会更好。

关于delphi - Delphi中如何泄漏字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1132561/

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