gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:01:11 25 4
gpt4 key购买 nike

malloc是在堆上分配一 block 内存还是应该叫虚拟地址空间?

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

编辑:

许多答案都非常详细,但没有一个能回答我的问题。

最佳答案

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

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

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

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

关于c - malloc 返回内存或虚拟地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com