是否可以在 MFC 应用程序的调试版本中替换内存分配器?

发布于 2024-08-20 18:03:56 字数 440 浏览 6 评论 0原文

我想在 MFC 应用程序中使用电围栏。我想跟踪 new/ delete,如果我可以跟踪 malloc/ free 这是一个额外的好处。

不幸的是,MFC 重新定义了 newdelete - 但使用宏 (DEBUG_NEW) - 所以我无法使用标准 C++ 方法来重新定义它们。 (MFC 将它们定义为具有不同的签名,并将源文件和行号作为附加参数)。

有没有办法强制所有 new/ delete 通过我的分配器,并阻止 MFC 尝试获取这些分配器?

I'd like to make use of Electric Fence in an MFC application. I'd like to track new/ delete, and if I can track malloc/ free that's an added bonus.

Unfortunately, MFC redefines new and delete - but using macros (DEBUG_NEW) - so I can't use the standard C++ method of redefining them. (MFC defines them to have different signatures, with source file and line numbers as additional parameters).

Is there any way to force all new/ deletes to go via my allocator, and stop MFC trying to grab these allocators?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天生の放荡 2024-08-27 18:03:56

您可以通过在 stdafx.h 末尾重新定义 DEBUG_NEW 来停止 MFC 对 new 的挂钩

#undef DEBUG_NEW
#define DEBUG_NEW new

You can stop the MFC hooking of new by redefining DEBUG_NEW in the end of stdafx.h

#undef DEBUG_NEW
#define DEBUG_NEW new
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文