malloc/free vs new/delete
malloc/new是库函数。
new/delete是运算符。
对于非内部数据类型的对象而言,光用malloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class Obj
{ public : Obj(void){ cout << “Initialization” << endl; } ~Obj(void){ cout << “Destroy” << endl; } void Initialize(void){ cout << “Initialization” << endl; } void Destroy(void){ cout << “Destroy” << endl; } }; void UseMallocFree(void) { Obj *a = (obj *)malloc(sizeof(obj)); // allocate memory a->Initialize(); // init //… a->Destroy(); // destroy free(a); // free memory } void UseNewDelete(void) { Obj *a = new Obj; // allocate memory and construct object //… delete a; // destroy object and free memory } |
http://lklkdawei.blog.163.com/blog/static/32574109200881445518891/
http://www.cnblogs.com/lazycoding/archive/2012/01/02/2310409.html