2014-09-27 51 views
1

我想用rand()函數填充大數組,當我通過int h_in [N]定義我的數組時,程序在vs 2010中崩潰,我驚訝的是,當我將它複製到在線編譯器ideone a link,並且一切正常。最後,我在VS 2010中定義了由h_in =(int *)malloc(N * sizeof(int))組成的數組,程序運行.I can不知道,希望有人指出我的錯誤。關於分配數組和rand()的奇怪錯誤

#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
int h_in[N]; 

被分配在堆棧中。

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

被分配在堆上。 [BTW:不投的malloc()結果]

默認堆棧大小爲1MB,所以你應該使用一個連接器選項,以增加它:

/F (Set Stack Size)