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

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

我是挑剔的称它为虚拟地址空间还是这只是DOS的遗产? Linux怎么样?

编辑:

许多答案都有很多细节,但没有一个能回答我的问题.

最佳答案
malloc在堆上分配内存,句点.

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

只有当列表中不包含足够大的块来满足您的malloc时,库才会向OS请求更多内存,例如:使用sbrk系统调用.此系统调用返回的地址可能是虚拟地址,也可能是真实地址,具体取决于您的硬件,但作为程序员,您不能(也不需要)知道这一点.

假设malloc分配虚拟地址空间而不是堆上的块就像是说读取从硬盘读取而不是从文件中读取:它与调用者的角度无关,并不总是如此.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...