数组2 ^ 25

Jat*_*mar 3 c arrays time swap

我试图在c中创建一个大小为2 ^ 25的数组,然后对它执行一些基本操作(memsweep函数).c代码是

#include <stdio.h>
#include <time.h>
#define S (8191*4096)
main()
{
                clock_t start = clock();
                unsigned i;
                volatile char large[S];
                for (i = 0; i < 10*S; i++)              
                large[(4096*i+i)%S]=1+large[i%S];

                printf("%f\n",((double)clock()-start)/CLOCKS_PER_SEC);
}
Run Code Online (Sandbox Code Playgroud)

我能够编译它,但在执行时它会给出分段错误.

cni*_*tar 9

这可能比你的筹码更大.您可以

  • large全球化
  • 使用 malloc

  • @selbie很有可能,但是堆栈的大小是实现定义的所以.. :) (2认同)