面试之:有了malloc/free 为什么还有new/delete
来源:互联网 发布:乐视网络电视怎么样 编辑:程序博客网 时间:2024/05/29 08:34
1.malloc/free 是C/C++的标准库函数,new/delte是C++运算符。
2.对于非内部数据类型来说,例如对象在创建时需要调用构造函数,在消亡的时候需要调用析构函数,而malloc/free无发满足这个要求
3.malloc/free是库函数,不是运算符,不在编译器控制权限之内
例如一下代码:
#include<iostream>
using namespace std;
class Obj
{
public:
Obj(void)
{
cout << "Initialization" <<endl;
}
~Obj()
{
cout << "Destroy" << endl;
}
};
void UseMallocFree()
{
cout << "MallocFree()" << endl;
Obj *a = (Obj*)malloc(sizeof(Obj));
free(a);
}
void UseNewDelete()
{
cout << "UseNewDelete()" << endl;
Obj *a = new Obj;
delete a;
}
int main()
{
UseMallocFree();
UseNewDelete();
system("pause");
return 0;
}
运行结果:
MallocFree()
UseNewDelete()
Initialization
Destroy
在malloc的时候并未调用构造函数,故对非内部数据类型是用new/delete比较合适
0 0
- 面试之:有了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?
- 有了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
- 有了malloc/free为什么还要new/delete?
- 有了 malloc/free 为什么还要 new/delete ?
- 有了malloc/free为什么还要new/delete?
- 有了malloc/free,为什么还要new/delete
- 车牌识别之Java调用EasyPR-linux篇
- Android的Service中弹出窗口解决方法
- MySQL查询之蕴涵
- Android Binder 机制学习
- 获取星期几
- 面试之:有了malloc/free 为什么还有new/delete
- java中IO流
- javaldx: Could not find a Java Runtime Environment!
- 数据库设计原则
- Java之正则表达式
- JDK7所有版本下载
- 《多线程编程》学习之三:停止线程 interrupt()、isInterrupted()、 Thread.interrupted()
- 制作聚美优品美容热点产品列表
- nginx常用代理配置