【发布时间】:2013-09-15 23:36:14
【问题描述】:
可以从程序分配的内存量是否有限制?我的意思是,对于程序是否有任何保护措施,例如,在无限循环中分配内存?
对malloc() 的调用何时会返回 NULL 指针?
【问题讨论】:
-
这取决于您的操作系统。
-
当您考虑按需分页操作系统时,这个讨论变得更加复杂;只要您不向新分配的内存写入任何内容,它就没有完全分配。这意味着您可以在只有 32 MiB RAM 的系统上分配 2 GiB 的内存,
malloc (...)将立即返回……当您第一次读/写该内存时,内核最终进行了真正的分配。这就是为什么malloc (...)的失败更能说明地址空间不足而不是实际存储空间不足。不用说实时操作系统不使用按需分页:)