为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误

Posted

技术标签:

【中文标题】为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误【英文标题】:Why setting DEBUG_NEW in an MFC app can cause compiler error为什么在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误 【发布时间】:2020-04-01 20:57:52 【问题描述】:

Here 表示您可以在 MFC 应用程序中使用 DEBUG_NEW 代替 new。当我这样做时,编译器会说 DEBUG_NEW 没有定义。它是 VS 2017。定义了 _DEBUG。有什么问题?

[编辑] 我首先要注意的是,我将它作为整个项目的全局定义。有成千上万的错误(这是一个大项目)。然后我只改变了一次。一个在我的代码中。它不工作。包含但不直接

【问题讨论】:

我知道这是一个非常不具体的问题,但不知道要提供什么信息。平台工具集是 v141,Windows SDK 是 v10.0.16299.0 您写道:您首先看到我将它作为整个项目的全局定义。你应该更新你的问题。另请注意@Joseph Willcoxson 写的内容。查看创建项目时获得的文件,它们已经定义了DEBUG_NEW。您只会对添加的新 .cpp 文件执行此操作。以与现有文件相同的方式执行此操作。以应有的方式去做,它会奏效的。 【参考方案1】:

您需要更具体。你把它放在哪里?

在新生成的 MFC 应用程序中,他们通常将这些行放在包含后的 .cpp 文件中(参见最后 3 行):

// LangInfo.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "LangInfo.h"
#include "LangInfoDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

【讨论】:

您首先看到我将它作为整个项目的全局定义。有成千上万的错误(这是一个大项目)。然后我只改变了一次。一个在我的代码中。它不工作。 包含但 不直接。 您还没有真正向我们展示任何我们可以提供帮助的东西。我们只是在猜测。生成一个测试 MFC 应用程序,看看 MS 是如何做到的。它存在于每个 MFC 应用程序向导生成的应用程序中。

以上是关于为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在基于 MFC 对话框的应用程序中设置主对话框的大小

MFC误报内存泄露的修复

MFC误报内存泄露的修复

为啥我编译的MFC应用程序在其他电脑上不能运行?

opengl如何在MFC中设置双缓冲

在MFC怎么中设置窗口大小和位置?