bonjour.
Voici que je tombe sur un problème cocasse. Pour l'illustrer, j'ai réduit le code au strict minimum. Voici mon code, qui compile sans problèmes sur Ms Visual C++ 6.0
Mon problème est le suivant: Lors de l'éxécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <string.h> int main() { char * string1 = "un deux trois quatre"; char string2[21]; strcpy(string2,string1); string2[0] = 'A'; *string1 = 'A'; return 0; }
à la ligne:
ça marche (string2 pointe alors vers une chaîne qui contient "An deux trois quatre"
Code : Sélectionner tout - Visualiser dans une fenêtre à part string2[0] = 'A';
mais à la ligne:
Le programme plante. ("access violation")
Code : Sélectionner tout - Visualiser dans une fenêtre à part *string1 = 'A';
J'aimerais bien comprendre pourquoi?
Est-ce que lorse que j'initialise une chaîne directement "codée en dur" elle va se mettre dans une zone de la mémoire dans laquelle mon programme n'a pas les droits en écriture?
Partager