Bonjour,
Les "strings" en C continuent de me jouer des tours, voyez l'exemple suivant :
L'affectation du caractère '*' au 3ème élément de ma chaîne me génère une erreur de segmentation à l'exécution, aucune erreur de compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char * str; str = "0123456789"; printf("Le caractère en 3ème position est: %c\n", str[2]); /* Affiche 2 */ str[2] = '*'; /* Erreur de segmentation */
S'agirait-il d'un overflow parce que je ne réserve qu'un pointeur char vers le début de la chaîne ? Le compilateur n'alloue-t-il pas la bonne quantité de mémoire automatiquement ? En effet, quand je définis str il ne pointe nulle part. Mais quand j'affecte la chaîne à ce pointeur, la chaine étant un tableau, str a pour valeur le pointeur vers le premier élément de type char. Le compilateur ne devrait-il pas allouer lui-même l'espace nécessaire pour le reste de la chaine ?
Merci d'avance pour votre éclairage !
Sébastien
Partager