我在一篇关于malloc的文章中看到了以下段落。
堆是一个连续(在虚拟地址方面)的内存空间,具有三个边界:起点、最大限制(通过sys/resource.h中的函数getrlimit(2)和setrlimit(2)进行管理),以及称为“断点”的终点。断点标记映射内存空间的结尾,即虚拟地址空间的部分与实际内存相对应。
我想更好地理解映射区域和非映射区域的概念。
linux
的手册后,当使用setrlimit
来改变数据段
大小(即堆、BSS和初始化数据部分)时,似乎只有软限制
- 即问题中提到的断点 - 有任何明确的影响,例如返回ENOMEM
。然而,我无法确定硬限制 - 可能是问题中提到的rlimit
- 所扮演的角色。 - Aviv