Avatar ·

什么是C++中的segmentation fault(段错误)以及如何修复?

大家好!我刚开始学习C++,经常遇到"Segmentation fault"(或"Segfault")错误。程序直接崩溃,我不明白为什么。以下是我的代码示例: ```cpp #include using namespace std; int main() { int* ptr; *ptr = 10; // 这里发生segmentation fault cout << *ptr << endl; return 0; } ``` 我声明了指针`ptr`,但没有给它分配地址。当我尝试通过这个指针写入值10时,程序崩溃。为什么会这样?我以为指针只是一个存储地址的变量,我可以直接往里面写数字。 另一个不工作的示例: ```cpp #include using namespace std; int main() { int arr[5] = {1, 2, 3, 4, 5}; for (int i = 0; i <= 5; i++) { // 错误:i <= 5,应该是 i < 5 cout << arr[i] << " "; } cout << endl; return 0; } ``` 这里程序有时崩溃,有时输出垃圾值。我听说