Linux C/C++ 開發中,Segmentation fault(段錯誤) 多因指標指向非法記憶體位址。典型錯誤為宣告 char *ptr; 未分配記憶體即直接寫入,導致覆寫關鍵區域觸發保護機制終止程式。
char *c1;
for (i = 0; i < n; i++) {
*c1 = getchar(); // c1 未指向有效記憶體!
c1++;
}
char *c1 = malloc(n * sizeof(char)); // 分配 n 個位元組
if (c1 == NULL) { /* 處理分配失敗 */ }
for (i = 0; i < n; i++) {
c1[i] = getchar(); // 安全存取已分配區域
}
free(c1); // 用畢釋放

遇到 Segfault 先檢查所有指標是否經過合法記憶體分配,善用 GDB bt 回溯堆疊定位崩潰行號,配合 Valgrind 偵測記憶體錯誤。