u_int64_t数组

Fre*_*ong 3 c c++ 64-bit segmentation-fault

我正在尝试这样做:

int main(void){
    u_int64_t NNUM = 2<<19;
    u_int64_t list[NNUM], i;

    for(i = 0; i < 4; i++){ 
        list[i] = 999;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我的Ubuntu 10.10 64位(gcc 4.6.1)会出现段错误?

sth*_*sth 5

您尝试在堆栈上创建一个非常大的数组.这导致堆栈溢出.

尝试在堆上分配数组.例如:

// Allocate memory
u_int64_t *list = malloc(NNUM * sizeof(u_int64_t));

// work with `list`
// ...

// Free memory again
free(list);
Run Code Online (Sandbox Code Playgroud)