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);
}

你有阻止内存泄漏的想法吗?

提前致谢。

4

2 回答 2

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()

在程序终止之前。

于 2014-02-13T16:14:54.517 回答
0

好的,现在我知道内存泄漏是误报。如果我在应用程序中使用我的 dll,您是否有隐藏这些泄漏的想法?(我的应用程序必须始终启用内存泄漏检测)那么如何从精确的 dll 中隐藏内存泄漏?

感谢您的大力帮助

于 2013-11-14T14:28:56.167 回答