C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用调试版覆盖新版,而不会损坏新版本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_565_1@microsoft运行时库提供分配函数的调试版本.对于C,这是具有签名的operator new的调试变体:
void *operator new(size_t size,int blockType,const char *filename,int linenumber);

并且宏被定义为

#define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__)

现在要对所有分配进行检测,通常可以定义

#if Defined DEBUG_NEW
#define new DEBUG_NEW
#endif

但是,这个定义会破坏使用placement new的任何地方,因为这两组参数最终都是语法错误.现在,我可以轻松处理代码中的少数用法,但标准库和boost使用新的位置.因此,定义全局意味着在定义之前包含许多内容并且会减慢编译速度.

那么有没有办法在我们的代码中设置分配而不是仅仅因为它们包含新的放置而不必将上一个定义放在所有文件中或者手动编写DEBUG_NEW?

@H_502_16@

解决方法

#pragma push_macro("new")
#undef new

new(pointer) my_class_t(arg1,arg2);

#pragma pop_macro("new")

要么

#pragma push_macro("new")
#undef new

#include <...>
#include <...>
#include <...>

#pragma pop_macro("new")
@H_502_16@ @H_502_16@
本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的c – 使用调试版覆盖新版,而不会损坏新版本全部内容,希望文章能够帮你解决c – 使用调试版覆盖新版,而不会损坏新版本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。