频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Linux下malloc/free与new/delete的区别

来源:中国IT实验室 作者:佚名 出处:巧巧读书 2008-05-23 进入讨论组

    由于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驱动大全专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章