什么是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;
}
```
这里程序有时崩溃,有时输出垃圾值。我听说