Как вы обнаруживаете/предотвращаете утечки памяти в своем (неуправляемом) коде?

Если вы используете Visual memory-leak Studio, Microsoft предоставляет memory-leak несколько полезных функций c для обнаружения и устранения c утечек памяти.

Я бы начал memory-leaks с этой статьи: https://msdn.microsoft.com/en-us/library/x98tx3cf(v=vs.140).aspx

Вот краткий c++ обзор этих статей. Во-первых, включите memory-leaks эти заголовки:

#define _CRTDBG_MAP_ALLOC
#include 
#include 

Затем вам нужно memory-leaks вызвать это, когда ваша программа c выйдет:

_CrtDumpMemoryLeaks();

В качестве альтернативы, если cpp ваша программа не завершается c каждый раз в одном и том memory-leaks же месте, вы можете вызвать memory-leaks это в начале вашей программы:

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

Теперь, когда memory-leaks программа выходит из программы, все cpp выделения, которые не были cpp освобождены, будут напечатаны cxx в окне вывода вместе с файлом, в memory-leaks котором они были размещены, и cxx возникновением выделения.

Эта cpp стратегия работает для большинства cxx программ. Однако в некоторых c случаях это становится затруднительным c или невозможным. Использование memory-leaks сторонних библиотек, которые c выполняют некоторую инициализацию memory-leaks при запуске, может привести c к появлению других объектов c++ в дампе памяти и затруднить memory-leaks отслеживание утечек. Кроме memory-leaks того, если какой-либо из memory-leaks ваших классов имеет члены cxx с тем же именем, что и любая c++ из подпрограмм выделения memory-leaks памяти (например, malloc), макросы c отладки CRT вызовут проблемы.

Существуют cxx и другие методы, описанные c++ в упомянутой выше ссылке cpp MSDN, которые также можно c использовать.

c++

c

memory-leaks

2022-08-19T22:32:07+00:00
Вопросы с похожей тематикой, как у вопроса:

Как вы обнаруживаете/предотвращаете утечки памяти в своем (неуправляемом) коде?