char * p [1234567] = {NULL};段故障,为什么?

时间:2017-09-01 04:48:55

标签: c

我是c

的新手
int main(int argc,char *argv[]) {
        char *p[1234567] = { NULL };
        return 1;

}

给出Segmentation fault

如果我改为12345,它会起作用。

2 个答案:

答案 0 :(得分:2)

这很可能是因为你的堆栈没有变量p所需的1234567 * sizeof(char *)字节空间

答案 1 :(得分:2)

1234567指针的数组将超过4MB。这比许多系统上的线程的堆栈容量大。例如,如果我没记错的话,在Win32上,为线程堆栈保留的地址空间默认为1MB。