我知道在一个模块中添加新内容并在另一个模块中删除它通常会导致 VC++ 出现问题。不同运行时的问题。如果我没记错的话,将模块与静态链接的运行时和/或动态链接的版本控制不匹配混合起来都会搞砸。
但是,跨模块使用 VC++ 2008 的 std::tr1::shared_ptr 是否安全?
由于只有一个版本的运行时甚至知道什么是 shared_ptr,所以静态链接是我唯一的危险(现在......)。我以为我已经读过 boost 的 shared_ptr 版本可以像这样安全使用,但我使用的是 Redmond 的版本......
我试图避免在分配模块中对释放对象进行特殊调用。(或类本身中的“删除这个”之类的东西)。如果这一切看起来有点 hacky,我正在使用它进行单元测试。如果您曾经尝试过对现有 C++ 代码进行单元测试,那么您就会明白有时您需要发挥多大的创造力。我的内存由 EXE 分配,但最终将在 DLL 中释放(如果引用计数按我认为的方式工作)。