有关分配数组和rand()的奇怪错误

时间:2014-09-27 09:22:00

标签: arrays exception random

我想用 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;
}

1 个答案:

答案 0 :(得分:0)

int h_in[N]; 

在堆栈上分配。

int * h_in = malloc(N * sizeof(int));

在堆上分配。 [顺便说一句:不要投出malloc()]

的结果

默认堆栈大小为1MB,因此您应该使用链接器选项来增加它:

/F (Set Stack Size)