C语言:都是动态分配内存,malloc和new有什么区别?malloc分配的内存是连续的吗?new分配的内存不连续吗?
5个回答
展开全部
对于内置的类型,malloc和new的作用是相同的,分配的都是连续的空间
在碰到class之类的自定义类型里,用new时,会自动调用类的构造函数,用delete会自动调用类的析构函数,如果用free,则无法执行相关的操作
new 是C++里的关键字
如果用C++语言,建议用new
在碰到class之类的自定义类型里,用new时,会自动调用类的构造函数,用delete会自动调用类的析构函数,如果用free,则无法执行相关的操作
new 是C++里的关键字
如果用C++语言,建议用new
更多追问追答
追问
他们分配的内存是否连续呢?这个怎么区分啊,要看具体情况吗?
追答
这个不用怀疑,分配的内存都是连续的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其他答案中的2楼是错的,我的实践证明malloc在少量内存分配是是连续的,可以用数组的方式调用,但是在大量内存分配时却不是连续的,若用数组的方式遍历的话,程序会崩溃。总之,malloc不能保证分配的内存是连续的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc和free函数是C语言中的函数,是刚开始的时候C就有的,new 和delete是后来C++对C语言内存管理的扩充。他们都是连续空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc才是C语言的,new是C++用的,不知道你说的到底是哪个语言.
追问
知道,就是C/C++语言!
追答
new 比malloc多了个自动调用类的构造函数的功能,所以创建类的对象应该用new ,如果只是简单的数组比如char[10]两种一样.
new 出来的数组内存是连续的,但两次new 之间是不连续的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询