c++中的malloc/free 和 new/delete这两对的区别
2010-07-25 19:54
507 查看
在c++中malloc/free 和 new/delete这两对都是对内存进行管理作用,但他们有很大的区别。
首先malloc、free是c/c++的标准库函数,注意他们是函数。而new和delete是c++的运算符,在c中式没有的。他们对内部数据类型没有什么太大区别,都是申请内存和释放内存,但是对非内部数据类型就能体现出来,由于c中没有类这个概念,所以用malloc时不会执行类的构造函数,使用free时也不会调用析构函数,而new和delete就会自动调用构造函数和析构函数。。
看下面的程序就能体现这个区别:
首先malloc、free是c/c++的标准库函数,注意他们是函数。而new和delete是c++的运算符,在c中式没有的。他们对内部数据类型没有什么太大区别,都是申请内存和释放内存,但是对非内部数据类型就能体现出来,由于c中没有类这个概念,所以用malloc时不会执行类的构造函数,使用free时也不会调用析构函数,而new和delete就会自动调用构造函数和析构函数。。
看下面的程序就能体现这个区别:
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)); // 申请动态内存 a->Initialize(); // 初始化 //… a->Destroy(); // 清除工作 free(a); // 释放内存 } void UseNewDelete(void) { Obj *a = new Obj; // 申请动态内存并且初始化 //… delete a; // 清除并且释放内存 }
相关文章推荐
- C++中,malloc/free和new/delete的区别
- C++中new/delete和malloc/free的区别
- C++中malloc/free和new/delete的区别---补充(15)《Effective C++》
- C语言中的malloc/free与C++中的new/delete的区别
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
- C/C++语言中malloc/free和new/delete的区别
- c/c++中malloc/free和new/delete的区别
- C++中的new/delete和malloc/free的区别
- 深入理解C++动态内存管理:malloc/free和new/delete的区别和联系
- malloc/free和new/delete的主要区别以及c与c++关于结构体定义使用的区别
- new/delete和malloc/free的区别
- malloc/free和new/delete的区别
- malloc/free和new/delete的区别及使用要点(转)
- new/delete和malloc/free的区别
- new/delete和malloc/free区别与联系
- C++进阶—>malloc/free与new/delete的区别
- malloc/free 与 new/delete 的区别
- malloc/free和new/delete的区别
- 【让你的C++程序更加高效】条款03:尽量使用new/delete而不是malloc/free
- 关于 C++ 的 new、delete 与 C 的 malloc、free 的区别