Я работаю над игрой с SDL в Visual Studio 2010. Я наткнулся на макрос _CrtDumpMemoryLeaks()
и подумал, что я отдам его. Вызов _CrtDumpMemoryLeaks()
выполняет печать утечек памяти в окне вывода, но не показывает, где это происходит.
Я прочитал статью MSDN в Включение обнаружения утечки памяти, и объясняет, что если я определяю _CRTDBG_MAP_ALLOC
, он должен вывести номер строки заявления о нарушении. Это не происходит в моем случае. (Однако я мог заставить его работать, если я использую malloc() напрямую - не используя "новое" ).
Код:
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *var = new int(5);
_CrtDumpMemoryLeaks();
return 0;
}
Вывод следующий:
Detected memory leaks!
Dumping objects ->
{58} normal block at 0x007D1510, 4 bytes long.
Data: < > 05 00 00 00
Object dump complete.
Если _CrtDumpMemoryLeaks()
не может выводить номера строк при распределении с использованием "нового", тогда предлагаются предложения по другим способам достижения аналогичного поведения.