C中的最大数组大小是多少?

时间:2018-05-21 18:09:05

标签: c arrays limits

我想知道C中的最大数组大小是什么,它取决于数据的类型,以及它是否取决于它的声明位置(堆或堆栈)。

以下代码适用于int,最大为1048576(2 ^ 20),也是1048577(相同+ 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处成功。

0 个答案:

没有答案