gpt4 book ai didi

c++ - 新的定义

转载 作者:行者123 更新时间:2023-11-30 00:37:56 24 4
gpt4 key购买 nike

今天找到一个关于内存泄漏检测的源码,在他的头文件中找到如下宏定义,谁能告诉我这是什么意思,谢谢!

#ifndef MC_NO_REDEFINITION
#define new MC_NEW
#define MC_NEW new(__FILE__,__FUNCTION__,__LINE__)
#define mc_new new
else
//use defined function name instead of keyword new & delete
#define debug_new new(__FILE__,__FUNCTION__,__LINE__)
#endif

这意味着,new 代表 new(__FILE__,__FUNCTION__,__LINE__),如果这是真的,当我在代码中使用 new 时,编译器如何知道我真正想调用什么?

最佳答案

提供这些宏的相同代码还必须提供全局 operator new() 的合适定义,它采用适当的附加参数,例如:

void * operator new(std::size_t n, char const * file, char const * func, char const * line)
{
// log file, func, line

return operator new(n);
}

还应该有一个匹配的operator delete()

注意 new 是关键字,我认为用宏替换关键字实际上是标准不允许的。

关于c++ - 新的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com