delete free

new<-->delete
malloc<-->free

free的确释放了对象的内存,但是不调用对象的析构函数,所以如果在对象中使用new分配的内存就会泄露
delete不仅释放对象的内存,并且调用对象的析构函数

在delete内部仍调用了free

但是两者是不一样的。 
1,malloc和free是函数,而new和delete是运算符。
MSDN Library关于malloc和free函数定义
void *malloc(    size_t size );//Allocates memory blocks.
void free( void* memblock );//Deallocates or frees a memory block.
MSDN Library关于new和delete说明
new keyword by C++
Allocates memory for an object or array of objects of type-name from the free store and returns a suitably typed, nonzero pointer to the object.
delete keyword by C++
Deallocates a block of memory.

2,malloc需要手工计算字节数,而new自动计算需要分配的空间
例如:分别用malloc和new分配一个数组内存
int* array_m,array_n;
array_m = malloc(10*sizeof(int));
array_n = new int[10];

3,malloc 失败返回 NULL, 而new 失败抛出异常
array_m = malloc(10*sizeof(int));
if(array_m!=NULL){
     printf("Allocates memory succeed/n");
}
else{
     printf("Allocates memory error/n");
}

4,malloc 功能分配内存,而new功能包括调用对应对象的析构方法和分配内存.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值