Tag: limit

C中size_t类型的malloc参数的限制是什么? Docs说它有UINT_MAX的上限,但我不能超越INT_MAX

我想分配一个2.9GB的char数组 database = (char*) malloc((2900 * 1000000 * sizeof(char))); 这给出了整数溢出警告, malloc返回NULL 。 malloc参数的类型为size_t ,根据文档的类型为unsigned int 。 所以max应该是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的定义。 非常感谢