C语言:都是动态分配内存,malloc和new有什么区别?malloc分配的内存是连续的吗?new分配的内存不连续吗?

 我来答
百度网友c758bbd
2012-12-01 · TA获得超过879个赞
知道答主
回答量:93
采纳率:0%
帮助的人:66.2万
展开全部
malloc是C语言的分配内存接口,new操作会在分配内存的情况下再调用构造函数对内存块进行初始化,malloc和new都是从堆中分配内存,所以都不能保证分配的内存是连续的。
350439756
2012-12-01 · TA获得超过399个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:222万
展开全部
对于内置的类型,malloc和new的作用是相同的,分配的都是连续的空间
在碰到class之类的自定义类型里,用new时,会自动调用类的构造函数,用delete会自动调用类的析构函数,如果用free,则无法执行相关的操作

new 是C++里的关键字
如果用C++语言,建议用new
更多追问追答
追问
他们分配的内存是否连续呢?这个怎么区分啊,要看具体情况吗?
追答
这个不用怀疑,分配的内存都是连续的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤影2008
2013-08-25
知道答主
回答量:74
采纳率:0%
帮助的人:23.4万
展开全部
其他答案中的2楼是错的,我的实践证明malloc在少量内存分配是是连续的,可以用数组的方式调用,但是在大量内存分配时却不是连续的,若用数组的方式遍历的话,程序会崩溃。总之,malloc不能保证分配的内存是连续的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李磊_1
2012-12-01 · TA获得超过299个赞
知道小有建树答主
回答量:337
采纳率:66%
帮助的人:119万
展开全部
malloc和free函数是C语言中的函数,是刚开始的时候C就有的,new 和delete是后来C++对C语言内存管理的扩充。他们都是连续空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友349d18b
2012-12-01 · TA获得超过444个赞
知道小有建树答主
回答量:571
采纳率:50%
帮助的人:369万
展开全部
malloc才是C语言的,new是C++用的,不知道你说的到底是哪个语言.
追问
知道,就是C/C++语言!
追答
new 比malloc多了个自动调用类的构造函数的功能,所以创建类的对象应该用new ,如果只是简单的数组比如char[10]两种一样.
new 出来的数组内存是连续的,但两次new 之间是不连续的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式