O que é segmentation fault (erro de segmentação) em C++ e por que ele ocorre?
Olá a todos! Sou iniciante em C++ e me deparei com um erro estranho. Meu programa compila sem erros, mas ao executar, ele trava com a mensagem "Segmentation fault (core dumped)". Eu nem entendo o que isso significa.\n\nAqui está um código simplificado que está causando esse problema para mim:\n\n```cpp\n#include \nusing namespace std;\n\nint main() {\n int* ptr;\n *ptr = 42; // Aqui ocorre o crash\n cout << *ptr << endl;\n return 0;\n}\n```\n\nEu apenas declaro um ponteiro `ptr` e tento escrever um valor nele. Por que o programa trava? Ouvi dizer que isso tem algo a ver com memória, mas não entendo os detalhes.\n\nTambém tenho outro exemplo com um array:\n\n```cpp\nint arr[5] = {1, 2, 3, 4, 5};\nfor (int i = 0; i <= 5; i++) {\n cout << arr[i] << endl; // Na última iteração, erro\n}\n```\n\nAqui estou ultrapassando os limites do array, mas por que isso causa um segmentation fault, em vez de apenas exibir lixo? Expliquem, por favor, o que é segmentation fault, o que a causa e como evitá-la.