2

私は32ビットのUbuntu 12.04に取り組んでいます。RAMは7.7GB。特定のプロセス (C++ で記述) を実行し、RAM 使用率が 50% に達すると、そのプロセスは「std::bad_alloc」をスローします。奇妙なことに、ヒープ サイズは無制限です (コマンド ulimit -v は「無制限」を返します)。では、原因として考えられるのはどれでしょうか?

4

2 に答える 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 に答える