我是新的Cchar * p [1234567] = {NULL};段錯誤,爲什麼?
int main(int argc,char *argv[]) {
char *p[1234567] = { NULL };
return 1;
}
給Segmentation fault
如果我更改爲12345,它會工作。
我是新的Cchar * p [1234567] = {NULL};段錯誤,爲什麼?
int main(int argc,char *argv[]) {
char *p[1234567] = { NULL };
return 1;
}
給Segmentation fault
如果我更改爲12345,它會工作。
1234567個指針數組將超過4MB以上。這比許多系統上的線程的堆棧容量大。例如,如果我沒有記錯,在Win32上爲線程堆棧保留的地址空間默認爲1MB。
我用NULL引入了數組,它仍然使用內存? – Sato
你可以請分享任何鏈接說。 – roottraveller
@roottraveller [這裏是鏈接](https://stackoverflow.com/a/45993484/1505939) –
那很可能是因爲您的堆棧不具有1234567 *的sizeof(字符*)的空間字節需要通過可變p
實際上有幾個重複候選人。 – jxh
這裏的一個具體解決方案是將變量移動到main之前的靜態內存區域。該區域通常比堆棧大得多。 –