new、delete用法(一)

第一部分:new的使用:
#define DEBUG_NEW new(THIS_FILE, __LINE__)解释
THIS_FILE:表示当前类所处的文件名;
__LINE__:表示分配内存操作所在的行数。
所以这个new多了两个参数,这是为了调试方便编译器预定义的两个参数。再加上new本身隐含了一个参数(new的对象的大小)所以是三个参数。
普通情况下,调用new,如 int* p = new int; 将产生两个操作:
    1.计算int的大小,sizeof(int);
    2.调用  void* operator new(size_t nAlloc){ return malloc(nAlloc);}分配内存。
要使用new(THIS_FILE,__LINE__)宏,需要调用vc自己定义的new函数版本
  void* operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
所以:
class CA;
CA*p = new CA();预处理程序便会将它转变为:
p= new (sizeof(CA), THIS_FILE, __LINE__) CFoo();

FILE(用来初始化 THIS_FILE)和 LINE 是专用的预处理符号,它保存当前被编译的模块文件名称和行数。 其主要用途是当你的应用程序泄漏时.























































































原文链接: https://www.cnblogs.com/yuanxingdefan/p/3223922.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/97745

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午4:24
下一篇 2023年2月10日 上午4:25

相关推荐