new,delete,malloc,free的区别?
来源:互联网 发布:mac怎么进入恢复模式 编辑:程序博客网 时间:2024/06/01 10:37
http://faq.csdn.net/read/184869.html
偶知道new
---------------------------------------------------------------
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
我们先看一看malloc/free和new/delete如何实现对象的动态内存管理,见下例。
class
{
public
~Obj(void){
void
void
};
void
{
}
void
{
}
类Obj的函数Initialize模拟了构造函数的功能,函数Destroy模拟了析构函数的功能。函数UseMallocFree中,由于malloc/free不能执行构造函数与析构函数,必须调用成员函数Initialize和Destroy来完成初始化与清除工作。函数UseNewDelete则简单得多。
所以我们不要企图用malloc/free来完成动态对象的内存管理,应该用new/delete。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。
malloc/free功能还有一好处,就是可以和realloc组合使用,在需要扩大内存块时不一定会导致内存移动;而用new/delete实现时只能用new[]-copy-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 的区别
- new/delete和malloc/free的区别
- new/delete和malloc/free的区别
- malloc/free 和 new /delete 的区别
- new/delete和malloc/free的区别
- new/delete 与malloc/free的区别
- malloc/free 与new/delete 的区别
- malloc/free与new/delete的区别
- new/delete 和malloc/free 的区别
- malloc/free与new/delete的区别
- new/delete和malloc/free的区别
- new/delete 和 malloc/free 的区别
- 元素异同比较
- 欢迎使用CSDN-markdown编辑器
- 第36天【健身】
- POJ 2826 || an easy problem ?!(未AC,呵呵~
- 在glassfish4中配置一个db2的pool
- new,delete,malloc,free的区别?
- 面试:机器学习--推荐算法
- 【javascript高级程序设计】读书摘录2 第五章、引用类型
- 在XSLT中输出内容带有CDATA的XML节点
- java object的wait和Thread的sleep方法区别
- 我的总结-动态规划(DP)
- 【DP】【HNOI2004】打鼹鼠
- Spring MVC 整合 freamarker的全过程
- A^X mod P 山东省赛,打表求解