2.9GBのchar配列を割り当てたい
database = (char*) malloc((2900 * 1000000 * sizeof(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
。どうもありがとう