DEBUG_NEW - это просто MACRO, который обычно определяется как:
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
Так что, где бы вы ни использовали new
, он также может отслеживать файл и номер строки, которые могут быть использованы для определения местоположения памятиутечка в вашей программе.
И __FILE__
, __LINE__
- это предопределенные макросы , которые оценивают имя файла и номер строки соответственно там, где вы их используете!
Читатьследующая статья, которая объясняет технику использования DEBUG_NEW с другими интересными макросами, очень красиво:
кросс-платформенный детектор утечки памяти
из Википедия,
Debug_new относится к технике в C ++ для перегрузки и / или переопределения оператора new и оператора delete для перехвата вызовов выделения и освобождения памяти и, таким образом, отладки программы для использования памяти, Это часто включает определение макроса с именем DEBUG_NEW и превращение нового в нечто новое (_ FILE _, _ LINE _) для записи информации о файле / строке при выделении. Microsoft Visual C ++ использует эту технику в своих классах Microsoft Foundation.Есть несколько способов расширить этот метод, чтобы избежать использования переопределения макросов, но при этом отображать информацию о файлах / строках на некоторых платформах.Есть много присущих этому методу ограничений.Он применяется только к C ++ и не может улавливать утечки памяти функциями C, такими как malloc.Тем не менее, он может быть очень простым в использовании и очень быстрым по сравнению с некоторыми более полными решениями отладчика памяти.