を越えて行くことができない私はCでsize_t型のmallocパラメータの制限はありますか?ドキュメントは、それがUINT_MAXの上限を持っていると言うが、私はINT_MAX
database = (char*) malloc((2900 * 1000000 * sizeof(char)));
で2.9ギガバイトのchar型の配列を割り当てたいこれは、整数オーバーフローの警告とmalloc
戻りNULL
を与えます。 malloc
のパラメータはsize_t
であり、ドキュメントによれば unsigned int
のタイプです。
最大値はUINT_MAX
で、最小値は2.9GBです。ただし、 MAX_INT
以上を割り当てようとすると、malloc
が失敗します。私のシステムの size_t
はint型ですか?これをどうやってチェックするのですか?私は
/usr/include/stdlib.h
と
./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h
しかし を通じて見size_t
の定義を見つけることができません。ありがとうございました
これは、十分なRAMがないことを意味します。 –
コンピュータに12GBのRAMがあります。 – Ross
また、システムが32ビットであることに言及するのを忘れてしまった。 –