[char * ptr] peut modifer ou peut pas modifier
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
Code:
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;
} |
Mon problème est le suivant: Lors de l'éxécution:
à la ligne:
ça marche (string2 pointe alors vers une chaîne qui contient "An deux trois quatre"
mais à la ligne:
Le programme plante. ("access violation")
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?