malloc/free 和 new/delete
(本文参考于网上)
首先两者都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给malloc/free。
因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。new/delete不是库函数而是运算符
malloc 是C语言的标准库函数,它实现了在堆内存管理中进行按需分配的机制,但是它不提供在C++中对像构造的支持,而new 则是一个 在C++中同时完成堆内存按需分配支持和对像构造功能的运算符。
对于这两者需要注意的是:
(1)内存分配可能失败,所以在动态分配之后需要检验一下是否分配成功。
(2)在释放内存后,需要将指针置空,否则可能变成“野”指针。
malloc/free 和 new/delete的更多相关文章
- malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存 不同点:(1)操作对象有所不同.malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光用m ...
- malloc/free和new/delete的区别
转自:http://blog.csdn.net/chance_wang/article/details/1609081 malloc与free是C++/C语言的标准库函数,new/delete是C++ ...
- malloc/free和new/delete的异同
一.基本概念 malloc/free: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则返 ...
- malloc free 和new delete区别
从网上看的学习之 1. malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符,与"+“.”-“.”*“.”/“有一样的地位. 2. new/delete是 ...
- malloc/free和new/delete的区别汇总
一.基本概念 malloc/free 1.函数原型及说明: void* malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则返回 ...
- malloc/free与new/delete的区别与联系
相同点:(1)都是申请内存,释放内存,free和delete可以释放NULL指针:(2)都必须配对使用,这里的配对使用,可不能理解为一个new/malloc就对应一个delete/free,而是指在作 ...
- c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义
4.malloc(free)和new(delete)的区别 malloc()函数: 1.1 malloc的全称是memory allocation,中文叫动态内存分配. 原型:extern void ...
- malloc/free 与 new/delete 比较
相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同. malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光 ...
- 百度笔试题:malloc/free与new/delete的区别(转)
百度笔试题:malloc/free与new/delete的区别 相同点:都可以申请动态内存和释放内存. 不同点: (1) 操作对象有所不同: malloc和free是C/C++的标准库函数,new和d ...
- malloc,free和new,delete之间的区别
1.malloc free 是c语言里面的,不过在c++中也能使用,这个只是申请的一块内存,一般不能申请对象的内存空间:2.new delete,是c++的,申请的也是一块内存,只是这个可以申请对象. ...
随机推荐
- eclipse测试链接sql server2008 数据库
注:在测试连接数据库之前必须保证SQL Server 2008是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则需要重新进行配置. 首先 使用命令行测试 ...
- python中matplotlib的颜色及线条控制
参考网址: http://www.cnblogs.com/darkknightzh/p/6117528.html http://stackoverflow.com/questions/22408237 ...
- Grunt Bower构建前端
Grunt + Bower—前端构建利器 目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的W ...
- 强制不使用“兼容性视图”的HTML代码
转自:http://www.weste.net/2013/8-9/93109.html 在IE8浏览器以后版本,都有一个"兼容性视图",让不少新技术无法使用.那么如何禁止浏览器自动 ...
- 页面初始化document.body.clientWidth大小变化
目前:原因不明 初步判断:设置字体大小前图片加载失败! 结果:等待验证
- js之常见问题--for循环中为什么点击总是弹出最后一个i
首先看看点击不同li标签时,弹出li的索引值对应的结果 HTML: <ul> <li>0</li> <li>2</li> <li> ...
- [Day14]Eclipse高级、类与接口作为参数返回值
l 不同修饰符的使用 类,最常使用public修饰 成员变量,最常使用private修饰 成员方法,最常使用public修饰 l 自定义数据类型的使用 类作为方法参数时,说明要向方 ...
- mysql插入数据会变中文
db.url=jdbc:mysql://192.168.0.149:3306/pack_platform_dev?useUnicode=true&characterEncoding=utf-8 ...
- [js]js设计模式-工厂模式
// 定义一个人 var p1 = { name: 'wxb', age: 22, writejs: function () { console.log(this.name + ' can sing. ...
- alias用法
echo 'alias msfconsole="pushd $HOME/git/metasploit-framework && ./msfconsole && ...