これは、 size_tが必要な理由についての私の以前の質問のフォローアップです。
size_tは、割り当てることができるメモリブロックの最大サイズを表すのに十分な大きさであることが保証されていることを考えると(つまり、size_tよりも大きい整数が存在する可能性があります)、私の質問は...
一度に割り当てることができる量を決定するものは何ですか?
これは、 size_tが必要な理由についての私の以前の質問のフォローアップです。
size_tは、割り当てることができるメモリブロックの最大サイズを表すのに十分な大きさであることが保証されていることを考えると(つまり、size_tよりも大きい整数が存在する可能性があります)、私の質問は...
一度に割り当てることができる量を決定するものは何ですか?
マシンのアーキテクチャ、オペレーティングシステム(ただし、2つは絡み合っています)、およびコンパイラ/ライブラリのセットによって、一度に割り当てることができるメモリの量が決まります。
malloc
OSが彼に与えることができるすべてのメモリを使用できる必要はありません。OSは、マシンに存在するすべてのメモリを使用可能にする必要はありません(たとえば、Windows Serverのさまざまなバージョンでは、ライセンス上の理由から最大メモリが異なります) 。
ただし、OSはマシンに存在するメモリよりも多くのメモリを使用可能にし、マザーボードで許可されているメモリよりもさらに多くのメモリを使用できることに注意してください(マザーボードに1 GBのメモリスティックのみを受け入れる単一のメモリスロットがある場合、Windowsは引き続き使用できます)プログラムは2GBのメモリを割り当てます)。これは、仮想メモリ、ページング(スワップファイル、古くて遅い友人:-)を使用して、またはたとえばNUMAを使用して実行されます。
実際のコードでは、次の3つの制約について考えることができます。