程序可以分配的内存量是否有限制?我的意思是,对于在无限循环中分配内存的程序,是否有任何保护措施?
什么时候调用 malloc()
会返回 NULL 指针?
最佳答案
是的,有一个限制。该限制取决于许多因素,包括(但不限于):
- 程序的指令集(例如,32 位二进制文件的地址空间小于 64 位二进制文件)。
- 系统有多少可用内存。 (这里的“内存”包括虚拟内存。)
- 系统管理员或特权进程设置的任何人为限制(例如,参见
setrlimit()
和(过时的)ulimit()
函数)。
当无法分配内存时,malloc()
将返回NULL
。如果系统完全内存不足,您的进程可能会被强制终止。
关于C - 一个程序可以为自己分配多少内存 - 它是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749758/