【发布时间】:2013-04-03 21:33:26
【问题描述】:
我正在使用一个程序,其中我的代码调用第三方库,该库使用 boost 和 shared_pointers 创建一个庞大而复杂的结构。这个结构是在我调用的方法中创建的,在方法结束时我知道程序已经完成。 对于我正在处理处理代码的大型示例,处理处理需要 30 分钟,而在退出时自动调用的 boost 代码需要很多小时。退出程序而不释放内存并花费所有时间将是一个完全可以接受的结果。 我试过 向量 *iddListV = 新向量(); // 这会泄漏内存 将所有相关结构添加到向量中,但这无济于事。 我也尝试调用 exit(0);在到达子程序结束之前。这也导致 boost 代码花费大量时间来尝试释放指针。 如何在不调用 boost 析构函数的情况下让 C++ 程序(Windows 上的 Microsoft C++)突然退出。 我的限制是我可以在分配 boost 结构之前调用任何函数,但一旦开始运行就不能修改代码。
【问题讨论】:
-
我使用的是 C++11 版本,但是 boost 是否允许您提供自定义删除器?
-
@chris 是的,有boost doc
-
很好奇,您是否尝试过分析以了解为什么会出现问题?
-
在调试器中运行在代码完成后暂停程序并退出函数总是在某个级别的 boost 析构函数处停止。
标签: c++ boost shared-ptr