malloc/free与new/delete的使用方法与区别
来源:互联网 发布:手机壳淘宝店推荐 编辑:程序博客网 时间:2024/06/15 18:41
Malloc 和 free 是C++/C语言中的标准函数而new/delete是C++中的操作符。他们都能够在C++中动态的分配内存和释放内存资源。
malloc/free不能满足动态对象的创建,因为对象在创建的时候会调用构造函数进行初始化,在生命周期结束的时候又要调用析构函数进行析构以释放资源。
malloc()和free()是库函数而非操作符,编译器对它们没有控制权限,因此malloc()和free()函数也就无力承担强加于他们身上构造和析构函数的任务。
因此,C++就出现了用new操作符来完成对象的动态内存分配以及对象的初始化工作,delete去清理垃圾以及完成整个对象在生命周期结束时的垃圾回收清理工作工作。
new/delete不是库函数他们是操作符(这里补充一句,sizeof也是操作符)。
下面让我们来看一些代码来帮我们很好的理解一下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));
// allocate memory
a->Initialize();
// initialize
//…
a->Destroy();
// clean up
free
(a);
// free allocated memory
}
void
UseNewDelete(
void
)
{
Obj *a =
new
Obj;
// allocate memory and initialize
//…
delete
a;
// clean up and free allocated memory
}
- malloc/free与new/delete的使用方法与区别
- malloc/free 与 new/delete 的区别
- new/delete 与malloc/free的区别
- malloc/free 与new/delete 的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free 与 new/delete 的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- new/delete与malloc/free的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- malloc/free与new/delete的区别
- 网站优化最重要的是网站的外部优化,4点解你忧愁!
- PAT (Basic Level) Practise
- 使用call_usermodehelper在Linux内核中直接运行用户空间程序
- string 、 CString、char,char*等之间的转换
- HTML5标签与HTML4标签的区别
- malloc/free与new/delete的使用方法与区别
- Pygame学习(1)------安装pygame
- Linux(ubuntu)下打包 解压
- 简单有效-禁止其他人到你电脑上用QQ
- Spring中XML配置文件的十二个最佳方法
- Myeclipse支持Velocity
- 推荐系统
- open和fopen的区别
- JEasyFrame 预览版1.2 发布