为什么C管理堆而不是操作系统呢?
发布时间:2020-12-16 10:37:44 所属栏目:百科 来源:网络整理
导读:换句话说,为什么free()只是将内存返回给操作系统,而malloc只是从操作系统请求内存? 这解决了三个密切相关的问题: 为什么C需要管理自己的堆? (这是因为操作系统只允许您分配和释放最小大小的连续内存吗?) 假设我在括号中写的是真的,为什么呢? 这个问题是
换句话说,为什么free()只是将内存返回给操作系统,而malloc只是从操作系统请求内存?
这解决了三个密切相关的问题: >为什么C需要管理自己的堆? (这是因为操作系统只允许您分配和释放最小大小的连续内存吗?) 解决方法
> malloc本身就是一个C方法.您正在使用为您提供的标准库,但最终,它就像您的C代码一样. >在某些操作系统中,您只能以页面大小(使用mmap)从操作系统获取内存.这对于您的常规数据结构来说太大了. >每次需要内存时进行系统调用都太昂贵了.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |