2013-11-08 3 views
0

Я пытаюсь использовать библиотеку Google V8, но обнаружил утечки памяти. Эти утечки памяти появились с этим очень небольшой код:Утечка памяти 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); 
} 

У вас есть идея для остановки утечки памяти?

Заранее спасибо.

+2

Откуда вы знаете, что у вас есть утечка памяти? Большую часть времени люди, которые задают этот вопрос, либо не знают, что такое утечка памяти, либо ошибаются, когда говорят, что у них есть утечка. – john

+1

Вы имеете в виду 'exit (0)'? –

+0

@john: Я знаю, что у меня утечка памяти, потому что я активирую обнаружение утечек памяти визуальной студии. VS отображает это сообщение _Определенные утечки памяти! _ На выходе Марк Гарсия: Да, моя ошибка. Извините – Hannibal

ответ

0

ok, теперь я знаю, что утечки памяти являются ложными срабатываниями. У вас есть идея скрыть эти утечки, если я использую свою dll внутри приложения? (Мое приложение должно всегда включать обнаружение утечек памяти) Так как скрывать утечку памяти из точной DLL?

Спасибо за вашу большую помощь

0

Вы можете установить флаги _CRTDBG_ALLOC_MEM_DF и _CRTDBG_LEAK_CHECK_DF с _CrtSetDbgFlag, как описано в 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)

В начале основного/WinMain, все, что я сделал вызов

v8 :: V8 :: Dispose()

до завершения программы.

Смежные вопросы