Malloc 和 free 是C++/C语言中的标准函数而new/delete是C++中的操作符。他们都能够在C++中动态的分配内存和释放内存资源。
malloc/free不能满足动态对象的创建,因为对象在创建的时候会调用构造函数进行初始化,在生命周期结束的时候又要调用析构函数进行析构以释放资源。
malloc()和free()是库函数而非操作符,编译器对它们没有控制权限,因此malloc()和free()函数也就无力承担强加于他们身上构造和析构函数的任务。
因此,C++就出现了用new操作符来完成对象的动态内存分配以及对象的初始化工作,delete去清理垃圾以及完成整个对象在生命周期结束时的垃圾回收清理工作工作。
new/delete不是库函数他们是操作符(这里补充一句,sizeof也是操作符)。
下面让我们来看一些代码来帮我们很好的理解一下malloc/free 和 new/delete 是如何对对象进行资源管理的。
malloc/free与new/delete的使用方法与区别
原创
©著作权归作者所有:来自51CTO博客作者阳阳船长的原创作品,请联系作者获取转载授权,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
new/delete 与 malloc/free
1 使用malloc、freemalloc、freemalloc、free 为 CCC 的标准库函数,需要引入库
malloc C++ 指针 空指针 内存分配 -
new / delete ,malloc / free 区别
都可以⽤来在堆上分配和回收空间。new /delete 是操作符,malloc/free 是库函数。
java 开发语言 初始化 析构函数 构造函数 -
elk8单机搭建
(ELK安装配置系列教程) (ELK日志分析平台搭建全过程) (ELK5.3.1从单机到分布式的安装与使用) (Elasticsearch 教程) (Elasticsearch 教程入门8篇) (ELK集群搭建) (ELK概念学习系列)ELK是三个开源工具组成,简单解释如下:Elasticsearch
elk8单机搭建 ELK Logstash Kibana Elasticsearch