malloc是否在堆上分配了一块内存,还是应该称为虚拟地址空间?
我是挑剔的称它为虚拟地址空间还是这只是DOS的遗产? Linux怎么样?
编辑:
许多答案都有很多细节,但没有一个能回答我的问题.
最佳答案malloc在堆上分配内存,句点.您的C库通常会保留可用内存块的列表(或更复杂的数据结构),找到一个合适的块来满足malloc(可能将更大的块拆分为多个较小的块)并将自由内存返回到列表中(可能将一些较小的块合并为一个较大的块)
只有当列表中不包含足够大的块来满足您的malloc时,库才会向OS请求更多内存,例如:使用sbrk系统调用.此系统调用返回的地址可能是虚拟地址,也可能是真实地址,具体取决于您的硬件,但作为程序员,您不能(也不需要)知道这一点.
假设malloc分配虚拟地址空间而不是堆上的块就像是说读取从硬盘读取而不是从文件中读取:它与调用者的角度无关,并不总是如此.
总结以上是内存溢出为你收集整理的malloc返回内存或虚拟地址空间全部内容,希望文章能够帮你解决malloc返回内存或虚拟地址空间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)