1

Я пробовал несколько часов, чтобы заставить его работать. Пока он обнаруживает утечки памяти, но находит тонну, и я не уверен, что это реально. Также я хотел бы видеть номер файла и строки (я знаю, что это возможно, но я не могу заставить его работать), чтобы я мог фактически решить утечку памяти.Как обнаружить утечки памяти с помощью инструментов в CRT в проекте C++/Java с использованием JNI?

Я добавил код, чтобы сбрасывать утечки памяти в методе, который часто называется (около 60 раз в секунду обычно), я не уверен, что все в порядке или нет, но поскольку у меня на самом деле нет «основного» «функции трудно решить, куда положить код.

Вот что я добавил:

// This part is in the includes part of the file 
#define _CRTDBG_MAPALLOC 
#define _CRTDBG_MAP_ALLOC_NEW 
#include <stdlib.h> 
#include <crtdbg.h> 

#ifdef _DEBUG 
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) 
#define new DEBUG_NEW 
#endif 

// This part is in the method 
_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 
_CrtDumpMemoryLeaks(); 

Спасибо за помощь!

+0

попробуйте deleaker или аналогичный отладчик - он помогает контролировать утечки памяти и объекты пользователя ... он укажет на строку, в которой обнаружена ошибка. –

+0

Дело в том, что файл .jar и deleaker будут принимать только .exe. Вы знаете какой-либо аналогичный инструмент, который будет работать с программой Java, которая вызывает код C++ через JNI? Благодарю. – Djeezus

+0

Каждое выделение является утечкой при вызове _CrtDumpMemoryLeaks() все время. Подумайте об использовании DllMain() для хорошего триггера. –

ответ

0

С помощью crt у вас есть возможность сравнить состояние памяти перед выполнением действия и после этого. Для достижения этого просто используйте _CrtMemDifference в ваших модульных тестах. Концепция заключается в написании модульных тестов, которые будут вызывать разные части вашего кода и будут получать состояние памяти приложения до использования _CrtMemCheckpoint и после вызова. Поэтому после этого вам нужно сравнить две контрольные точки с _CrtMemDifference.

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

  • Нет связанных вопросов^_^