您的位置:首页 > 编程语言 > C语言/C++

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就会自动调用构造函数和析构函数。。

看下面的程序就能体现这个区别:

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;   // 清除并且释放内存
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: