您的位置:首页 > 其它

new delete malloc free的区别

2015-06-09 10:57 225 查看
1. malloc free 是C中使用的关键字,new delete 是C++中使用的关键字

2. new 和delete 分成两步

1> 分配内存空间,会根据类型自行计算

2> 调用构造函数,构造对象

malloc 只是完成了第一步,分配了内存空间。返回的是内存的起始地址,如果分配失败返回NULL。

delete : 1> 调用析构函数 2> 释放内存空间

3. 如果是分配的数组,delete[] 如果少了[],则只会删除第一个元素。

4.

int* p=new int[10];

delete[] ps;

question: 我们如何知道pa指向对象的数组的大小?怎么知道调用几次析构函数?

answer: 我们在new对象数组的时候,需要保存数组的维度,C++的做法是在分配数组空间时多分配4个字节,专门保存数组的大小。

但是new[]最终返回的是对象数组的指针,而不是所有分配空间的起始地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: