我想分配一个 2.9GB 的字符数组
database = (char*) malloc((2900 * 1000000 * sizeof(char)));
这会给出一个整数溢出警告和malloc
返回NULL
。该
malloc
参数是 type size_t
,根据文档是 type
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
。非常感谢