"#Define new DEBUG_NEW", "#undef THIS_FILE" и т. Д. Действительно необходимы? - PullRequest
10 голосов
/ 06 февраля 2009

При создании нового приложения MFC мастер создает следующий блок кода почти в каждом файле CPP:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

и иногда это добавляет:

#undef THIS_FILE
static char THIS_FILE[] = __FILE__;

Я хотел бы удалить этот код из моих файлов CPP, если он избыточен. Я использую приложение MFC с C ++ / CLI на VS2008.

Я попытался запустить Debug после удаления этого кода из CPP, и, похоже, он работает нормально. «новые» переменные работают нормально, утечек нет, а в диалоговых окнах ASSERT отображается правильное имя файла и выполняется переход к ошибочной строке.

Может кто-нибудь сказать мне, что он делает и безопасно ли его удалить?

Ответы [ 2 ]

10 голосов
/ 06 февраля 2009

Это совершенно безопасно, чтобы удалить это. Это отладочная помощь; оставив его, вы увидите в окне вывода предупреждения о любых утечках памяти, которые возникают при выходе из программы.

1 голос
/ 18 января 2012

В Microsoft Visual C ++ 2010 я могу удалить весь код и поместить только один #define NEW DEBUG_NEW в заголовок, и я все еще получил правильные отчеты об утечке памяти, например,

Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {7508} normal block at 0x029B9598, 54 bytes long.
 Data: <                > E4 B8 C9 00 12 00 00 00 12 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {7501} normal block at 0x029B94A8, 28 bytes long.
 Data: <                > E4 B8 C9 00 05 00 00 00 05 00 00 00 01 00 00 00 
f:\source\agent\agent\deviceid.cpp(21) : {7500} normal block at 0x029CDFC0, 8 bytes long.
 Data: <        > A8 95 9B 02 B8 94 9B 02 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6786} normal block at 0x029C0D88, 160 bytes long.
 Data: <        G       > E4 B8 C9 00 19 00 00 00 47 00 00 00 01 00 00 00 
f:\source\agent\sysinfo\sysinfo.cpp(27) : {6733} normal block at 0x029B84D8, 92 bytes long.
 Data: <                > 00 00 00 00 00 10 00 00 00 00 01 00 FF FF FE 7F 
Object dump complete.
...