重载new的主要用途

默认分类 · 2024-04-22 · 36 人浏览

new操作符用于动态分配内存并构造对象。

重载该函数并与宏定义相配合可以很好的检测出内存泄漏的地方在哪里

正常重载new运算符的语法为 void* operator new(std::size_t sz)

我们可以使用

  • void* operator new(std::size_t size, const char* file, int line);
  • void* operator new[](std::size_t size, const char* file, int line);

这两种形式来重载,想要使用new的时候调用我们重载的new 还要定义一个宏
#define new new (__FILE__, __LINE__)
这样我们就可以根据__FILE__文件名 加 __LINE__ 行号去找到申请内存的位置,从而定位检测内存泄漏

Theme Jasmine by Kent Liao