![]() |
1
16
释放内存是安全的,只要它来自同一个源
您没有提到的另一个问题,但可以通过共享指针加以验证,即当对象的代码存在于DLL中并由DLL创建,但DLL之外的另一个对象最终引用了它(通过共享指针)。如果该对象在卸载DLL后被销毁(例如,如果它是模块级静态对象,或者如果DLL是由
可以 被卸载,而不是让COM服务器要求卸载它们。 |
![]() |
2
14
你开始明白这是多么不可思议
跨越DLL边界的安全性正是
与其他人所说的相反,在构造
和
(也就是说,世上不存在所谓的
由于在删除程序上执行了类型擦除,因此
将此与
|
![]() |
3
7
如果您担心的话,请使用接受deleter参数的shared_ptr构造函数的形式。删除程序可以回调分配对象的模块,以便在适当的上下文中进行删除。 Boost的文档声称它与TR1 100%兼容,因此希望这一点没有误导性: http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/shared_ptr.htm#constructors |
![]() |
4
2
我想它和使用中的任何一个类一样安全
也就是说:如果模块使用完全相同的运行时库,以及完全相同的编译器开关和选项,那么应该是安全的。 永远不要使用静态运行库,因为每个模块都将获得其自身的所有全局实例。 |
![]() |
5
2
关于一般主题,我看到的最好的建议是,内存应该在分配给它的相同上下文中释放。但这并不排除库传回应用程序代码应该释放的指针,因此我想说,以这种方式传递共享的ptr可能是安全的,因为这与一般情况相同。
|
![]() |
JoeZ · Do while循环不会中断 7 年前 |
![]() |
JoeZ · 如果循环不工作。运行时显示重复cout。 7 年前 |
![]() |
Joe · 正在展开宏以进行调试? 7 年前 |
|
Matthew · 自己编译公共库会提高性能吗? 7 年前 |
![]() |
Barry · 在MSVC中处理宏中的额外括号 7 年前 |