Segmentation Fault (Core dumped) en c++
Ce code lors de l'exécution affiche le résultat attendu mais les tirages segmentation fault (core dumped)
à la fin :
string str[4] = {
"Home",
"Office",
"Table",
"Bar"
};
for (int i = 0; i<5; i++)
{
cout << str[i] << "\n";
}
Sortie:
Home
Office
Table
Bar
Segmentation fault (core dumped)
Quel est le signinficance de segmentation fault (core dumped). J'ai cherché et il semble qu'une erreur du type qui se produit lorsque vous essayez d'accéder à la mémoire non allouée, alors, quel est le problème avec le code ci-dessus?
- Utilisation
g++ -Wall -g
pour compiler et déboguer avecgdb
Vous devez vous connecter pour publier un commentaire.
vous devriez écrire:
#define NEL(array) sizeof(array)/sizeof(*array) ... for (int i = 0; i < NEL(str); i++)
...g++ -Wall -g
) et d'apprendre à utiliser le débogueurgdb
.C++ Tableaux sont basés sur 0 de sorte que vous ne peut pas accéder str[4], depuis son index de la gamme de 0 à 3.
Vous avez alloué un tableau, d'une longueur de 4:
Puis la boucle doit s'arrêter lorsqu':
Plutôt que
i < 5
.compteur devrait être de zéro à trois. Pour la boucle besoins de modification.
str
est unstring[4]
, il a 4 éléments, ce qui signifie que les indices de 0 à 3 sont valides. Vous êtes également accéder à l'indice 4.Vous obtenez l'erreur de segmentation parce que vous tentez d'accéder à un élément qui n'existe pas c'est à dire
str[4]
Les éventuels indices de 0-3.
Vous accédez à des données au-delà de la fin de votre tableau.
str
est un tableau de taille 4, mais vous accédez à un cinquième élément dans votre boucle, c'est pourquoi vous obtenez une seg fault