首页 > 解决方案 > 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 时成功。

标签: carrayslimits

解决方案


推荐阅读