不能分配超过一百万的整数

lig*_*rst 7 c

我正在尝试时间和比较排序算法.根据我的理解:sizeof(int)是4个字节,因此int array[one million];产生(4)百万字节,大概是4,000 kb或4mb.

那我为什么不能呢?我很确定我还有更多.准确地说是2gb.

如果这意味着什么,我正在使用gcc.

Pab*_*ruz 9

堆栈上不能有那么多整数.

尝试在堆上为您的阵列分配空间.

int *array = malloc(1000000*sizeof(int));
// if array is not null, then you have an array with 1,000,000 ints.
Run Code Online (Sandbox Code Playgroud)

完成排序算法后,释放数组:

free(array); // frees memory allocated before
Run Code Online (Sandbox Code Playgroud)

  • 没有堆栈限制,就没有堆栈溢出. (12认同)