Я следую за MSDN статьи для обнаружения утечек памяти с помощью CRT.
http://msdn.microsoft.com/en-us/library/x98tx3cf%28v=vs.100%29.aspx
я добавил _CrtDumpMemoryLeaks (); до точки выхода моего приложения. Он показывает мне тысячи утечек памяти в разных файлах. Но я заинтересован в поиске утечек памяти конкретного файла / класса / функции. Есть ли возможный способ реализовать это.
Вот что я пытался сделать.
void SomeClass::SomeRandomFunction(SomeRandomParameters)
{
_CrtDumpMemoryLeaks(); // Start of function.
// Some lines of codes which may contain memory leaks.
_CrtDumpMemoryLeaks(); // End of function.
}
Я добавил точки останова на входе и выходе из этого метода. Я думал, что вторая функция DumpMemory будет отображать только утечки памяти, которые были обнаружены между этими двумя вызовами функции DumpMemory. Но этого не произошло. Есть ли другой способ сделать это?
_CrtDumpMemoryLeaks () следует использовать только в конце программы. То, что вы ищете, это _CrtMemCheckpoint (), вызовите его в начале функции, чтобы сделать снимок. И используйте _CrtMemDumpAllObjectsSince () в конце функции, чтобы увидеть, что было выделено после моментального снимка, но не выпущено. Будьте осторожны, они не обязательно могут быть утечками, когда вы делаете это мелкозернистым.
Других решений пока нет …