c++ - 关于对内存泄漏的第 3 方 DLL 进行沙盒处理

标签 c++ memory-management memory-leaks opencascade

我正在寻找一种方法来至少解决我必须使用的泄漏 DLL 的症状。虽然库 (OpenCascade) 声称提供了一个内存管理器,但我还无法让它释放它分配的任何内存。

我至少希望将对该模块的调用放在“沙盒”中,以防止我的应用程序在 OCC 模块不再运行时不会丢失内存。

我的问题是:虽然我意识到这样做是一个丑陋的 HACK (TM),但是否可以预先分配一段内存供库专门使用,或者围绕它构建某种沙箱这样我就可以跟踪他们使用了哪些内存区域,以便在我完成后自行释放它们?

或者那会不会是一个丑陋的 hack,我应该尝试以其他方式解决问题?

最佳答案

唯一可靠的方法是将库的使用分离到一个专用进程中。您将启动该进程,将数据和参数传递给它,运行库代码,检索结果。一旦您决定内存消耗不再是可容忍的,您将重新启动该过程。

关于c++ - 关于对内存泄漏的第 3 方 DLL 进行沙盒处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180138/

相关文章:

c++ - 我能保证Lua堆栈的大小吗?

ruby-on-rails - Ruby 中的内存模型

c++ - 新数组放置需要缓冲区中未指定的开销?

haskell - 什么是空间泄漏?

javascript - 使用 IE Javascript 泄漏检测器有困难

c++ - 如何告诉 AC_SUBST 不要替换参数中的变量?

python - Malloc 与 nogil 一起使用安全吗?

c++ - 有没有办法替代使用函数的所有定义,并自动在源代码中更改变量名称?

objective-c - Mac OS X 10.4 上的 NSViewController

c - 释放函数内部的指针,并在 main 中使用它