У меня есть утечка памяти, которую я пытаюсь выследить в моей программе mfc. Обычно я хотел бы сделать что-то вроде следующего:ошибка C2661: «CObject :: operator new»: не перегружена функция принимает 4 аргумента
заголовочный файл
// Leak Detection
#if defined(WIN32) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#endif
файл каст
// Leak detection
#if defined(WIN32) && defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
#ifdef DEBUG_NEW
#undef DEBUG_NEW
#endif
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
Этот метод хорошо работает в большинстве файлов, но когда я включаю его в некоторых файлах, таких как мой документ, я получаю ошибку: ошибка C2661: «CObject :: operator new»: нет перегруженной функции принимает 4 аргумента
Какое решение здесь? Должен ли я быть # новым, где-то или что-то еще?
Спасибо!
Педантно говоря '#define new DEBUG_NEW' вызывает неопределенное поведение (если я правильно помню). – Nawaz
@Nawaz: Кажется, он отлично работает для других классов. Каким образом можно определить, где происходит утечка памяти? Похоже, это «рекомендованное Microsoft решение». Большинство профайлеров делают забавные вещи с моим кодом. – Jordan
Правильный способ сделать это - заменить новые и удалить операторы для вашего класса или глобально. –