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__ 是专用的预处理符号,它保存当前被编译的模块文件名称和行数。 其主要用途是当你的应用程序泄漏时.











































posted on 2013-07-29 20:54  远行的帆 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yuanxingdefan/p/3223922.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值