这篇博客文章“使用C++Builder和Delphi进行应用程序开发”指出:
在 Delphi 中编写的几乎所有内容都可以轻松地在 C++Builder 中使用(...)您可以为 Delphi 项目编写一次对象,然后将其不加修改地重复使用在 C++ 项目中。
那么 TInterfacedObject 及其基于引用计数的自动内存管理如何呢?它是否也适用于 C++Builder,而不会导致内存泄漏?还是基于 C++ 的内存管理与此基于接口计数的技术不兼容?
对于 TInterfacedObject,Delphi / C++ 文档 指出(由我高亮):
TInterfacedObject 提供了基本的引用计数功能,使得它的派生类在 Delphi 和 C++ 代码中都非常有用。
请注意:此问题是关于在 C++Builder 项目中直接编译 Delphi / Object Pascal 源代码(经过 C++Builder 预编译器运行后),而不是通过动态链接(DLL)。
DelphiInterface
模板中,并始终(且仅)通过包装的_di_
类型引用它。如果你遵循这个规则,引用计数就会起作用。我使用这个模板还没有遇到过任何内存泄漏问题。 - David