これは、size_tが必要な理由について、my previous questionへのフォローアップです。 size_tのは、あなたが(まだsize_t型よりも大きく、いくつかの整数が存在することができるという意味)を割り当てることができ、メモリのブロックの最大サイズを表現するのに十分な大きさが保証されていることを、私の質問は考えるどのくらいのメモリを割り当てることができますか?
...
何一度に割り当てることのできる量を決定します。
これは、size_tが必要な理由について、my previous questionへのフォローアップです。 size_tのは、あなたが(まだsize_t型よりも大きく、いくつかの整数が存在することができるという意味)を割り当てることができ、メモリのブロックの最大サイズを表現するのに十分な大きさが保証されていることを、私の質問は考えるどのくらいのメモリを割り当てることができますか?
...
何一度に割り当てることのできる量を決定します。
マシンのアーキテクチャ、オペレーティングシステム(2つは絡み合っています)、およびコンパイラ/ライブラリのセットによって、一度に割り当てることができるメモリの量が決まります。
malloc
OSが彼に与えることができるすべてのメモリを使用できるようにする必要があります。 OSはは、マシン内のすべてのメモリが存在し利用できるようにするを必要としない(例えばWindows Serverのさまざまなバージョンでは、さまざまな最大メモリfor licensing reasonsを持っている)
しかし、OS がより利用可能にすることに注意してくださいマザーボードで許可されているメモリよりもさらに多くのメモリを搭載しています(マザーボードには1GBのメモリスティックのみを受け入れるメモリスロットが1つあり、Windowsはプログラムで2GBのメモリを割り当てることができます)。これは、仮想メモリ、ページング(あなたが知っているスワップファイル、あなたの古くて遅い友人:-)の使用を通じて、またはたとえば、NUMAの使用を通じて行われます。
私は実際のコードでは、3つの制約を考えることができます。
プロテクトモードでの 'メモリ断片化(最大フリーブロック)'は、利用可能な仮想アドレス空間の最大規模です。 – xanatos
あなたの質問にした修正を見てください。 – xanatos
OS。コメントは十分に長くなかったので、これらは単なる余分な文字です。 –
@xanatosだから、size_tは実際にはそれが必要であるよりも大きくなる可能性がありますか? –