C语言:malloc出来的空间在物理地址上是否也是连续的?

malloc能开出一段在虚拟地址上连续的空间,那么其在物理地址上是否也是连续的呢?如果区域大小超过一页,一般是分配连续的两页,还是离散的两页?... malloc能开出一段在虚拟地址上连续的空间,那么其在物理地址上是否也是连续的呢?如果区域大小超过一页,一般是分配连续的两页,还是离散的两页? 展开
 我来答
风若远去何人留
2015-11-16 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450129
专业C/C++软件开发

向TA提问 私信TA
展开全部
不一定是连续的。
malloc出来的空间,只是在虚拟内存中是连续的。而从实际的物理空间到虚拟内存空间还有一个映射的关系。这个映射是由操作系统来控制的,一般情况下,从虚拟地址无法反查到物理地址。对于连续的虚拟地址空间,也就无法得知是否物理连续。但由于映射的不确定性,当申请一段内存空间,尤其是比较大的内存长度情况下,物理地址不连续的可能性还是相当大的。

事实上,大多数的编程不需要关注物理空间是否连续。
tattackor
2015-10-31 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:887万
展开全部
1、线性地址空间是连续的,对于物理地址空间,可以不连续,所以物理地址可能不连续
对于程序员看到的是虚拟地址空间,这个应该是连续的。

2、malloc申请的空间是在执行的时候由内存池分配的连续空间,这块空间是系统自动分配的,一般是够用的,如果不够用或者内存池为空的话,malloc返回的指针为空。使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有可能相邻的两个字节是在不同的物理分页上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haiyangfenghuo
2014-11-10 · TA获得超过2439个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:803万
展开全部
malloc申请的空间是在执行的时候由内存池分配的连续空间,这块空间是系统自动分配的,一般是够用的,如果不够用或者内存池为空的话,malloc返回的指针为空。使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有可能相邻的两个字节是在不同的物理分页上;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-11-10
展开全部
只能保证虚拟地址空间连续,物理空间取决于MMU的映射,如果一页内的话是连续的,超过一页那么不一定
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
happy3只熊
2014-11-10 · TA获得超过154个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:111万
展开全部
不连续的,malloc是哪里有空闲内存,就往哪里找地址。 如果要的内存不大,就很可能连续。
大的地址的话,不连续的可能性就很大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式