c - C中的最大数组大小是多少?
问题描述
我想知道 C 中的最大数组大小是多少,它是否取决于数据的类型,以及它是否取决于它的声明位置(堆或堆栈)。
以下代码适用于int
最大 1048576 (2^20) 的大小,也适用于 1048577 (same + 1),但不适用于 2097152 (2^21) - 我没有搜索精确的限制:
#include <stdio.h>
#define MAX 1048577llu /* 2097152llu */
int main()
{
int tab[MAX];
/* long long int tab[MAX] */
tab[MAX - 1] = 123;
printf("tab[%llu] declared, tab[%llu] = %d\n", MAX, MAX - 1, tab[MAX - 1]);
return 0;
}
使用long long int
,它在 2^20 时失败,但在 2^19 时成功。
解决方案
推荐阅读
- c# - 当我还书时,它不会在数据库中添加 +1
- php - 如何在不影响其他功能的情况下结束/终止检查表内 IP 地址的功能
- javascript - 使用 TypeScript 在代理中正确键入动态函数
- mysql - MySQL 查询:查找键(如“Y”)的列,然后使用另一列唯一 ID 更新第三列?
- spring-boot - 如何在 Spring Boot 应用程序中正确使用 ObjectDB?
- google-app-engine - Google Cloud 错误 13:在控制台中运行 gcloud app deploy 时发生内部错误
- selenium - WebDriver 类型中的方法 findElements(By) 不适用于参数 (List
) 收到此错误消息 - java - 如何检查java中的测试覆盖率?
- c++ - 强制生成模板基函数
- python - Gstreamer splitmuxsrc 不播放 splitmuxsink 制作的 MP4 文件