C - 一个程序可以为自己分配多少内存 - 它是如何确定的?

标签 c memory

程序可以分配的内存量是否有限制?我的意思是,对于在无限循环中分配内存的程序,是否有任何保护措施?

什么时候调用 malloc() 会返回 NULL 指针?

最佳答案

是的,有一个限制。该限制取决于许多因素,包括(但不限于):

  • 程序的指令集(例如,32 位二进制文​​件的地址空间小于 64 位二进制文​​件)。
  • 系统有多少可用内存。 (这里的“内存”包括虚拟内存。)
  • 系统管理员或特权进程设置的任何人为限制(例如,参见 setrlimit() 和(过时的)ulimit() 函数)。

当无法分配内存时,malloc() 将返回NULL。如果系统完全内存不足,您的进程可能会被强制终止。

关于C - 一个程序可以为自己分配多少内存 - 它是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749758/

相关文章:

c - C 中追加和清除字符串

c - 学习如何在 C 中解析字符串和使用结构

c - uint64 到 C 中的字符串

c - 如何在C中对缓冲区中的内容进行分区

c++ - 如何在不吞噬 CPU 的情况下进行大量处理?

c - 给定一个指向结构中成员 a 的指针,编写一个返回指向该结构的指针的例程

c - C中子进程的内存使用

node.js - 超出 Google Cloud Functions 内存限制

c++ - 为动态数据结构预分配内存

c - 在整个函数中保留 C 内存