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 : 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;
}
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?