私は32ビットのUbuntu 12.04に取り組んでいます。RAMは7.7GB。特定のプロセス (C++ で記述) を実行し、RAM 使用率が 50% に達すると、そのプロセスは「std::bad_alloc」をスローします。奇妙なことに、ヒープ サイズは無制限です (コマンド ulimit -v は「無制限」を返します)。では、原因として考えられるのはどれでしょうか?
2 に答える
5
ほとんどの 32 ビット プラットフォームでは、プロセスが 4GB (2^32 バイト) を超える仮想メモリをアドレス指定することはできません。32 ビット Linux では、1 GB のアドレス空間がカーネル用に予約されているため、ユーザー プロセスは 3 GB のアドレス指定可能なメモリに制限されます。
于 2013-01-10T15:28:01.330 に答える
3
32 ビット マシンでは、PAEを使用しても、単一プロセスのアドレス空間を 4GB より大きくすることはできません。
于 2013-01-10T15:29:27.677 に答える