linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 软件开发 >
栏目导栏
资料搜索
热门文章
·Linux 下 C 语言编程
·Linux下的通用线程池创建
·C++字符串转换篇
·linux C 进程操作篇
·linux上的C/C++编译器gcc/egcs
·GCC使用手册
·linux C 文件权限控制篇
·fopen()函数的参数说明
·linux C 接口处理篇
·在Redhat Linux上安装 GCC 编译
·C语言运算符
·GCC使用指南
·Linux下C开发环境的构成和安装
·Linux常用C函数-日期时间篇
·GCC使用手册与常用命令
最新文章
·从脚本编写到面向对象的 Pytho
·Linux平台下的Maya:Blender 简
·epoll入门
·在Linux下发布程序需要注意版本
·Suse Linux系统下JAVA AWT界面
·Vim编译器配合ctags实现函数原
·在Ubuntu Linux 8.04上构建GCC
·Linux操作系统下Socket编程地址
·将VC程序移植到Linux系统的几点
·Linux下malloc/free与new/dele
·Linux下用GTK和socket实现简单
·Linux操作系统下让Tomcat启动在
·Linux操作系统中如何编译C程序
·几种常被人们忽略的Linux系统下
·Eclipse编程工具 在Ubuntu下的
Google
 
Linux下malloc/free与new/delete的区别
[ 作者:  加入时间:2008-05-23 09:46:24  来自:Linux联盟收集整理 ]
 

由于malloc/free是库函数,不是运算符,他们不能执行构造函数和析构函数,只是负责分配内存。

1、malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。

2、对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。

3、因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

4、C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存

new 是个操作符,和什么”+”,”-”,”=”…有一样的地位.malloc是个分配内存的函数,供你调用的.

new是保留字,不需要头文件支持.malloc需要头文件库函数支持.

new 建立的是一个对象,malloc分配的是一块内存.

new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间。

malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·实用技巧:Linux下命令排列、调度与替换  (2008-05-23 09:45:49)
 ·关于Linux操作系统中VI编辑器字符串查找  (2008-05-23 09:44:59)
 ·Linux VI编辑器中的复制与粘贴  (2008-05-23 09:44:20)
 ·Linux内核bootsplash功能的实现方法介绍  (2008-05-23 09:41:09)
 ·初次远程做Linux Iptables规则注意事项  (2008-05-23 09:39:40)
 ·诺基亚将在更多产品上采用Linux操作系统  (2008-05-22 10:36:11)
 ·Linux系统下触摸屏的简单使用和配置方法  (2008-05-22 10:34:09)
 ·Windows下运行Linux程序Virtual Desktop  (2008-05-22 10:29:38)
 ·Linux操作系统终端下强大工具Screen使用  (2008-05-22 10:24:20)
 ·Debian Linux系统Socks5服务器安装方法  (2008-05-22 10:20:16)