Memory 堆的数量&;在PC上堆叠

Memory 堆的数量&;在PC上堆叠,memory,compiler-construction,stack,heap,Memory,Compiler Construction,Stack,Heap,程序可用的堆和堆栈数量是多少?如何确定?它依赖于编译器还是PC或两者吗?它依赖于操作系统、硬件和其他正在运行的程序。您可以向操作系统询问物理内存和交换空间的数量,但不能询问程序实际可用的堆和堆栈的数量。您的程序有自己的虚拟内存空间,但操作系统是否能够备份该空间中的所有分配只能在您尝试分配它时才能知道——如果没有内存备份,分配将失败。它是“无限的”:。每个进程接收一个虚拟地址空间,该空间仅受CPU和操作系统实现的限制。如果CPU或操作系统是32位的,则进程有可能寻址约4GB的虚拟内存(即使您的电脑

程序可用的堆和堆栈数量是多少?如何确定?它依赖于编译器还是PC或两者吗?

它依赖于操作系统、硬件和其他正在运行的程序。您可以向操作系统询问物理内存和交换空间的数量,但不能询问程序实际可用的堆和堆栈的数量。您的程序有自己的虚拟内存空间,但操作系统是否能够备份该空间中的所有分配只能在您尝试分配它时才能知道——如果没有内存备份,分配将失败。

它是“无限的”:。每个进程接收一个虚拟地址空间,该空间仅受CPU和操作系统实现的限制。如果CPU或操作系统是32位的,则进程有可能寻址约4GB的虚拟内存(即使您的电脑中安装的RAM较少)。在64位CPU和64位操作系统上,当前的实现将虚拟地址空间限制为48位,因此进程认为它最多可以使用256TB的内存


操作系统将根据进程需要动态地尝试保留尽可能多的堆和堆栈空间。

几乎取决于一切,包括操作系统和操作系统设置。如何确定它还取决于操作系统(如果可能的话)。因此,如果没有更多的细节,你的问题是无法回答的。