C语言:malloc出来的空间在物理地址上是否也是连续的?
malloc能开出一段在虚拟地址上连续的空间,那么其在物理地址上是否也是连续的呢?如果区域大小超过一页,一般是分配连续的两页,还是离散的两页?...
malloc能开出一段在虚拟地址上连续的空间,那么其在物理地址上是否也是连续的呢?如果区域大小超过一页,一般是分配连续的两页,还是离散的两页?
展开
展开全部
1、线性地址空间是连续的,对于物理地址空间,可以不连续,所以物理地址可能不连续
对于程序员看到的是虚拟地址空间,这个应该是连续的。
2、malloc申请的空间是在执行的时候由内存池分配的连续空间,这块空间是系统自动分配的,一般是够用的,如果不够用或者内存池为空的话,malloc返回的指针为空。使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有可能相邻的两个字节是在不同的物理分页上。
对于程序员看到的是虚拟地址空间,这个应该是连续的。
2、malloc申请的空间是在执行的时候由内存池分配的连续空间,这块空间是系统自动分配的,一般是够用的,如果不够用或者内存池为空的话,malloc返回的指针为空。使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有可能相邻的两个字节是在不同的物理分页上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc申请的空间是在执行的时候由内存池分配的连续空间,这块空间是系统自动分配的,一般是够用的,如果不够用或者内存池为空的话,malloc返回的指针为空。使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有可能相邻的两个字节是在不同的物理分页上;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-11-10
展开全部
只能保证虚拟地址空间连续,物理空间取决于MMU的映射,如果一页内的话是连续的,超过一页那么不一定
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不连续的,malloc是哪里有空闲内存,就往哪里找地址。 如果要的内存不大,就很可能连续。
大的地址的话,不连续的可能性就很大。
大的地址的话,不连续的可能性就很大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询