相关疑难解决方法(0)

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

我想分配一个2.9GB的char数组

  database = (char*) malloc((2900 * 1000000 * sizeof(char)));
Run Code Online (Sandbox Code Playgroud)

这给出了整数溢出警告和malloc返回NULL.的 malloc参数的类型的size_t根据文档其是类型的 unsigned int.

所以最大应该UINT_MAX是至少2.9GB.但是,如果我尝试分配超过MAX_INTmalloc失败.这是否意味着 size_t我的系统是int类型?我该如何检查?我看了看

/usr/include/stdlib.h 
Run Code Online (Sandbox Code Playgroud)

./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h 
Run Code Online (Sandbox Code Playgroud)

但找不到定义size_t.非常感谢

c malloc size-t limit

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

limit ×1

malloc ×1

size-t ×1