O que é segmentation fault (erro de segmentação) em C++ e como corrigi-lo?
Olá a todos! Comecei a estudar C++ recentemente e constantemente me deparo com o erro "Segmentation fault" (ou "Segfault"). O programa simplesmente trava e eu não entendo por quê. Aqui está um exemplo do meu código:
```cpp
#include
using namespace std;
int main() {
int* ptr;
*ptr = 10; // Aqui ocorre segmentation fault
cout << *ptr << endl;
return 0;
}
```
Declarei o ponteiro `ptr`, mas não atribuí um endereço a ele. Quando tento escrever o valor 10 nesse ponteiro, o programa quebra. Por que isso acontece? Eu pensei que um ponteiro é apenas uma variável que armazena um endereço, e que eu poderia escrever um número nele.
Outro exemplo que não funciona:
```cpp
#include
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i <= 5; i++) { // Erro: i <= 5, mas deveria ser i < 5
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
Aqui o programa às vezes trava, às vezes imprime lixo. Ouvi dizer que