new和malloc的区别
1、malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符
2、new出来的指针是直接带类型信息的,而malloc返回的都是void*指针。
3、new 建立的是一个对象;alloc分配的是一块内存.
4.new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间;malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针.
为什么要有new、delete?
对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。.因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。
简而言之:
new 是一个操作符,可以重载
malloc 是一个函数,可以覆盖
new 初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数
malloc 仅仅分配内存,free仅仅回收内存
转载于:https://www.cnblogs.com/julie-yang/p/4677962.html
new和malloc的区别相关推荐
- HeapAlloc与malloc的区别
malloc是在CRT的内存堆上分配的,这个堆的存在一般来说你是不会关心的 HeapAlloc则不同,你需要给它指定你想从哪个堆上分配,而这个堆是从HeapCreate创建出来的 HeapAlloc大 ...
- C++ new和malloc的区别
这里先对new和delete简单进行一下总结,然后再细说new和malloc的区别. 一.new和delete C语言提供了malloc和free两个系统函数,完成对堆内存的申请和释放.而C++则提供 ...
- C++ | 动态分配内存 new和malloc的区别
01 静态分配内存 通常声明变量都采用"静态分配"的方式,也就是所有变量声明必须在编译阶段完成. 02 动态分配内存--new和delete 动态分配内存是指程序在运行时才提出分配 ...
- 面试中常被问到(六)new/delete和malloc/free区别
new/delete和malloc/free区别 (1)二者都是用来实现动态内存管理,内存空间的开辟(new,malloc)以及内存空间的释放(delete,free) (2)malloc/free是 ...
- 【C++】new和malloc的区别
一.显而易见的区别 1.属性 new/delete是C++关键字,需要编译器支持: malloc/free是库函数,需要头文件支持. 2.参数 使用new操作符申请内存分配时,无须指定内存块的大小,编 ...
- C++中的new和malloc的区别
区别如下: new会先调用malloc分配内存,并调用类的构造函数创建对象 malloc只是分配内存,不调用类的构造函数创建对象 delete会执行类的析构函数销毁对象,然后调用free释放内存空间 ...
- kmalloc、vmalloc、malloc的区别
简单的说: kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc ...
- new与malloc的区别以及实现方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/shanghairuoxiao/article/details/70337890 new和malloc ...
- new运算符与malloc函数区别
相同点: 都可以进行内存管理. 不同点: 1.new 是c++中的操作符,malloc是c 中的一个函数 2.new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而ma ...
- C++(1)new和malloc的区别和联系
最近着手学习c++,对着书一边读一遍写代码.遇到了一些疑问,记录一下. 当我在读到new这个关键字的使用的时候,作者写道:有heap分配出这个类型的对象,将地址返回去. 读到这,我会想起当初学过的c语 ...
最新文章
- jq append添加的元素click获取不到的解决方法
- 大数据架构中使用JSON-RPC好,还是RESTful API好?
- java 基础知识部分提炼
- Python3反转字符串
- Kylin3.1.3连接Hbase报错找不到 hbase-common lib not found的解决办法
- c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
- 数据在市场运营中的应用
- C语言工作笔记-函数指针的使用(补充C回调系统)
- C++并发中的条件变量 std::condition_variable
- Ruby的Range类
- 关于Ubuntu10.04中使用 apt-get install 安装软件总是出现“E: Package *** has no installation candidate” 错误的解决方案
- list自定义排序工具类
- JavaScript、canvas小球加速和减速运动
- cad计算机土方软件,土方计算软件FastTFT - 飞时达软件
- 亲测Trimble X7三维扫描仪
- Y的十年职业生涯小结(2012-2022)
- 一个web页面的访问的过程
- 数据分析基础篇16讲之07用户画像:标签化就是数据的抽象能力
- react 入门学习(一)
- https://api.douban.com 不在以下 request 合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/net
热门文章
- 使用PaupGUI软件合并一致性树consensus tree
- 北师大计算机网络原理和应用作业,北师大网络作业计算机组成原理 作业一(可编辑)...
- mysql 5.7 缺点_MySQL · 特性分析 · MySQL 5.7 外部XA Replication实现及缺陷分析
- 计算机组成原理考试计算题,计算机组成原理常考计算题.doc
- java 音乐api接口_关于网易云音乐爬虫的api接口?
- openssh windows_WINDOWS环境配置SSH服务
- C++知识点7——函数传参
- 高温保护_连续4天高温预警!高温作业,这些劳动保护知识一定要懂!
- java 字符串原子变量,如何在java中提供原子读/写2个变量?
- 两队选手每队5人进行一对一的比赛(算法)