malloc 返回内存或虚拟地址空间

2023-12-24

malloc 是在堆上分配一块内存还是应该将其称为虚拟地址空间?

我是否挑剔地将其称为“虚拟地址空间”,或者这只是 DOS 的遗产? Linux 怎么样?

EDIT:

很多答案都很详细,但没有一个回答我的问题。


malloc在堆上分配内存,期间。

您的 C 库通常保留可用内存块的列表(或一些更复杂的数据结构),找到合适的块来满足malloc(可能将一个较大的块分割成多个较小的块)并返回free将内存添加到列表中(可能将一些较小的块合并为一个较大的块)

Only当列表不包含足够大的块来满足您的需求时malloc,库将向操作系统请求更多内存,例如使用sbrk http://en.wikipedia.org/wiki/Sbrk系统调用。此系统调用返回的地址可能是虚拟地址,也可能是真实地址,具体取决于您的硬件,但作为一名程序员,您无法(也不需要)知道这一点。

这么说malloc分配的虚拟地址空间而不是堆上的块就像是说read从硬盘而不是文件读取:从调用者的角度来看,这是无关紧要的,而且并不总是正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

malloc 返回内存或虚拟地址空间 的相关文章

随机推荐