c – 大小为2 ^ 25的数组
发布时间:2020-12-16 10:43:12 所属栏目:百科 来源:网络整理
导读:我试图在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[(
我试图在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("%fn",((double)clock()-start)/CLOCKS_PER_SEC); } 我能够编译它,但在执行时它会给出分段错误. 解决方法
你没有那么多的堆栈空间来分配一个大的数组…例如,在Linux上,堆栈大小通常是8192字节.你肯定超过了那个.
最好的选择是使用malloc()在堆上分配内存.所以你会写char * large = malloc(S);.您仍然可以使用[]表示法访问数组. 或者,如果你在Linux上,你可以在命令行上调用sudo ulimit -s X,其中X是一个足够大的数字,以便你的数组适合堆栈……但我通常不鼓励这个解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |