我想用 rand()函数填充大数组,当我通过 int h_in [N] 定义我的数组时,程序在vs 2010中崩溃,到我的惊讶的是,当我将它复制到在线编译器ideone a link并且一切正常时。最后我通过 h_in =(int *)malloc(N * sizeof(int))在VS中定义数组2010年,该计划有效。我无法弄清楚这一点,并希望有人指出我的错误。
#include <stdio.h>
#include <stdlib.h>
const int N = 1024 * 1024;
int main()
{
//int *h_in = (int *)malloc(N * sizeof(int));
int h_in[N];
float sum = 0.0f;
srand(1);
for(unsigned int i = 0; i < N; i++) {
h_in[i] = (rand() & 0xFF);
}
return 0;
}
答案 0 :(得分:0)
int h_in[N];
在堆栈上分配。
int * h_in = malloc(N * sizeof(int));
在堆上分配。 [顺便说一句:不要投出malloc()
]
默认堆栈大小为1MB,因此您应该使用链接器选项来增加它: