WINX的STD_NEW与MFC共存问题
事由 WINX的 AutoFreeAlloc 受到了广泛的关注,很多读者反应这对他们很受启发。 昨天有读者反馈了 STD_NEW 与 MFC 不能共存的问题,我在这里想谈一下这个问题。 原因 MFC 在源代码文件中生成了如下调试代码:
这里定义了一个名为 new 的宏。这导致MFC程序中不能使用所有非标准形式的 new 操作 符。这是 MFC 本身的一个缺陷。 STD_NEW 中使用了 placement new,这个 new 操作符在C++标准库 <new> 或者 <new.h> 头文件中定义。 解决方案 我推荐的解决方案是,删除MFC在源代码文件中的调试代码中的如下语句:
不过这带来另一个问题,在该源代码文件中发生的内存泄漏,MFC程序无法检测到了。 要解决这个问题也很简单,如果要用到 new 的地方,直接用 DEBUG_NEW 代替好了。例如 :
改为
个人推荐 我个人的推荐是,不只是在要使用 WINX 的 STD_NEW 时候这样做,而是,所有代码中都 使用DEBUG_NEW,而不是直接使用new。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |