【问题标题】:Amount of Heap & Stack on a PC [closed]PC上的堆和堆栈数量[关闭]
【发布时间】:2013-08-23 07:40:09
【问题描述】:

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

【问题讨论】:

  • 几乎取决于所有内容,包括操作系统和操作系统设置。如何确定它也取决于操作系统(如果可能的话)。因此,如果没有更多细节,您的问题无法真正回答。

标签: memory compiler-construction heap-memory stack-memory


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 2013-12-22
      • 2013-05-28
      • 2013-05-26
      • 2010-12-06
      • 2014-12-09
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多