1.new、delete、malloc、free 关
系
delete 会调用对象的析构函数,和 new 对应 free 只会释放内存,new 调用构造函数。
malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可
用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用 maloc/free 无法满
足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析
构函数。由于 malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把
执行构造函数和析构函数的任务强加于 malloc/free。因此 C++语言需要一个能完成动态
内存分配和初始化工作的运算符 new,以及一个能完成清理与释放内存工作的运算符
delete。注意 new/delete 不是库函数。
2.delete 与 delete []区别
delete 只会调用一次析构函数,而 delete[]会调用每一个成员的析构函数。在 More
Effective C++中有更为详细的解释:“当 delete 操作符用于数组时,它为每个数组元素
调用析构函数,然后调用 operatordelete 来释放内存。”delete 与 New 配套,delete []
与 new []配套
MemTest*mTest1=newMemTest[10];
MemTest*mTest2=newMemTest;
int*pInt1=newint[10];
int*pInt2=newint;
评论0
最新资源