0

プログラムで利用できるヒープとスタックの量とは? また、コンパイラまたは PC、またはその両方に依存していますか?

4

2 に答える 2

1

OS、ハードウェア、その他の実行中のプログラムに依存します。物理メモリとスワップ領域の量について OS に問い合わせることはできますが、プログラムで実際に使用できるヒープとスタックの量については問い合わせることはできません。プログラムは独自の仮想メモリ空​​間を取得しますが、OS がその空間内のすべての割り当てをバックアップできるかどうかは、割り当てようとした場合にのみわかります。バックアップするメモリがない場合、割り当ては失敗します。

于 2013-08-23T07:43:46.560 に答える
1

それは「無制限」です:]。すべてのプロセスは、CPU と OS の実装によってのみ制限される仮想アドレス空間を受け取ります。CPU または OS が 32 ビットの場合、プロセスは最大 4 GB の仮想メモリをアドレス指定する可能性があります (PC にインストールされている RAM が少ない場合でも)。64 ビット CPU と 64 ビット OS では、現在の実装では仮想アドレス空間が 48 ビットに制限されているため、プロセスは最大 256 TB のメモリを使用できると考えています。

OS は、プロセスが必要とするだけのヒープとスタック スペースを動的に予約しようとします。

于 2013-08-23T07:51:19.670 に答える