malloc和new的区别
来源:互联网 发布:户型图平面设计软件 编辑:程序博客网 时间:2024/06/07 01:47
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
1、new 是c++中的操作符,malloc是c 中的一个函数
2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数
3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。
4、new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的,而malloc返回的都是void指针。
5、new和malloc虽然都是申请内存,但申请的位置不同,new的内存从free store分配,而malloc的内存从heap分配,free store(自由存储区)和heap很相似,都是动态内存,但是位置不同,这就是为什么new出来的内存不能通过free来释放的原因。不过微软编译器并没有很好的执行标准,很有可能把free store和heap混淆了,因此,free有时也可以。
6、delete时候不需要检查NULL,而free(NULL)那就麻烦大了。
new/delete的功能完全覆盖了malloc/free,C++不把malloc/free淘汰出局,是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。
0 0
- new和malloc的区别
- new和malloc的区别
- new和malloc的区别
- malloc和new的区别
- malloc和new的区别
- new和malloc的区别
- malloc和new的区别
- new和malloc的区别
- malloc 和new的区别
- new和malloc的区别
- new和malloc的区别
- malloc和new的区别
- new和malloc的区别
- new和malloc的区别
- malloc和new的区别
- malloc和new的区别
- new和malloc的区别
- malloc和new的区别
- noip2014提高组初赛(答案+选择题题目+个人分析)
- matlab/simulink/simpowersystem中连续vs离散
- nginx 文件上传限制
- yii框架中的两表联查+分页
- DynamicMethod:更接近IL
- malloc和new的区别
- 快速掌握ThreadLocal
- webstorm快捷键大全
- service绑定示例
- noip2015提高组初赛(答案+选择题题目+个人分析)
- 低频时码授时技术与中国电波钟表发展历程简介
- 关于maven导入工程pom文件报错问题及解决
- 面向对象和原型知识点
- 【.Net码农】C#获取实体类属性名和值 | 遍历类对象