【问题标题】:C++ smart reference across dll boundary跨 dll 边界的 C++ 智能引用
【发布时间】:2012-08-24 03:42:19
【问题描述】:

有人知道跨 dll 边界的智能引用的良好库/解决方案吗?

这是预期的用例:

  1. 主程序加载dll
  2. dll 分配内存并返回 smart_ref
  3. 主程序使用智能引用(总是检查它是否有效)
  4. dll 被卸载(失去耦合)
  5. main 在检查 smart_ref 时不应崩溃

【问题讨论】:

标签: c++ memory dll smart-pointers


【解决方案1】:

您可以从 DLL 中导出一种free 函数,并从smart_ref 的析构函数中调用它。这就是COM 和类似技术的工作原理。

【讨论】:

  • 我仍然对此感到困惑。如果某些进程在没有适当清理的情况下故意卸载 DLL(即调用 decref 函数等),那么 COM 将无法正常工作,Main 在 FreeLibrary(hmodule) 之后仍然会有完整的引用。如何保护内存免受这种情况的影响,以便完整的 smart-refs 在 isValid 检查时返回 false?
猜你喜欢
  • 2011-07-03
  • 2013-12-12
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 2021-04-16
相关资源
最近更新 更多