在64位Linux上,32位进程可以拥有多少虚拟内存空间(即在使用malloc()
分配内存之前可以分配和使用多少内存,而不会得到空指针错误)?
我在我的32位Linux上尝试过,达到了约3 GB的限制。在64位Linux上能否获得更多内存?
在64位Linux上,32位进程可以拥有多少虚拟内存空间(即在使用malloc()
分配内存之前可以分配和使用多少内存,而不会得到空指针错误)?
我在我的32位Linux上尝试过,达到了约3 GB的限制。在64位Linux上能否获得更多内存?
malloc()
来分配整个地址空间。这些东西的大小因程序而异。查看/proc/<pid>/maps
以查看进程中如何使用地址空间;您可以使用最大未使用地址范围来限制malloc()
的数量。如上所述,32位内核上的32位进程能够分配大约3GB左右的内存。64位内核上的32位进程则能够分配大约4GB左右的内存。