malloc/free与new/delete的不同及注意点
2013-12-05 14:08
330 查看
#include<iostream> using namespace std; class Obj{ public : Obj(){cout<<"Initialization"<<endl;} ~Obj(){cout<<"Destroy"<<endl;} void Init(){cout<<"Initialization2"<<endl;} void Destroy(){cout<<"Destroy2"<<endl;} }; void malloc_test(){//malloc/free 不会执行构造函数与析构函数 Obj *a=(Obj*)malloc(sizeof(Obj)); a->Init(); //~~~~~ a->Destroy(); free(a); } void new_test(){ Obj * a=new Obj; delete a; } int main(){ malloc_test(); new_test(); }
除了前者是函数,后者是标识符的区别外
前者是在C语言中诞生的,用于内存分配但是不会执行构造函数与析构函数。(这里没有继承,要是有继承关系,用free就难以处理从派生类到基类的析构了,内存泄露在所难免)
后者是C++主要用于动态对象的分配与删除,自动调用构造函数与析构函数。
相关文章推荐
- malloc/free与new/delete的相同点和不同点
- malloc/free与new/delete有什么不同?
- malloc/free与new/delete的相同点和不同点
- malloc/free与new/delete的相同点和不同点
- 关于malloc/free与new/delete的区别
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free .
- malloc/free与new/delete的区别
- new、delete、malloc、free
- new、delete和malloc、free
- new和malloc以及delete和free的区别
- new/delete 和malloc/free 的区别一般汇总
- new free|| malloc delete
- new/delete和malloc/free的区别
- 内存分配方式,堆区,栈区,new/delete/malloc/free
- 百度笔试题:malloc/free与new/delete的区别
- 关于 C++ 的 new、delete 与 C 的 malloc、free 的区别
- new和delete malloc和free
- 整理:new/delete和malloc/free的区别和联系
- new/delete 和malloc/free 的区别