我尝试使用 Google V8 库,但发现内存泄漏。这些内存泄漏出现在这个非常小的代码中:
//I link with v8 in my project settings (Visual studio 2008 )
#include <v8.h>
void test(){ // Never called
v8::V8::Initialize();
}
void main(){
exit (0);
}
你有阻止内存泄漏的想法吗?
提前致谢。
我尝试使用 Google V8 库,但发现内存泄漏。这些内存泄漏出现在这个非常小的代码中:
//I link with v8 in my project settings (Visual studio 2008 )
#include <v8.h>
void test(){ // Never called
v8::V8::Initialize();
}
void main(){
exit (0);
}
你有阻止内存泄漏的想法吗?
提前致谢。
您可以使用 _CrtSetDbgFlag 设置标志 _CRTDBG_ALLOC_MEM_DF 和 _CRTDBG_LEAK_CHECK_DF,如http://msdn.microsoft.com/en-us/library/5at7yxcs%28v=vs.71%29.aspx中所述,并删除对 _CrtDumpMemoryLeaks() 的显式调用,一旦所有进程终止,它将自动调用。
不幸的是,这并不能解决 v8 的问题(这就是我到达这篇文章的方式),但它确实适用于 Qt 应用程序,我也在寻找完整的答案。
出于某种原因,它现在对我有用,除了添加
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF)
在 main/WinMain 开始时,我所做的只是调用
v8::V8::Dispose()
在程序终止之前。
好的,现在我知道内存泄漏是误报。如果我在应用程序中使用我的 dll,您是否有隐藏这些泄漏的想法?(我的应用程序必须始终启用内存泄漏检测)那么如何从精确的 dll 中隐藏内存泄漏?
感谢您的大力帮助