Je reçois cette erreur quand j'execute le program : Unhandled exception at 0x004115ae in LesPointeur2.exe: 0xC0000005: Access violation writing location 0x00417a28.
Je comprends que "Hello World" reçoit les propriétés d'une constante.
Mais je ne l'ai jamais déclaré comme telle (const char *MyString).
Pourquoi je ne peux pas directement changer un caractère à l'aide d'un pointeur comme dans le code suivant :
t'as un pointeur ok, mais tu veux l'utiliser en tableau là, et tu n'initialises pas sa taille (opérateur new ou malloc(C))
__________________________
Spirit - modérateur casu ^-^'
MyString est un pointeur sur une chaine ...
Tu affectes un autre pointeur sur le debut de ta chaine. Jusque la ok.
Apres tu peux te deplacer dans cette chaine et en lire le contenu sans problemes.
Par contre tu ne peux pas en modifier le contenu.
Cela provient de la maniere dont sont crees les executables.
Ta chaine "MyString" est ecrite dans un espace protege (string table) de ton binaire (que tu peux voir avec la commande "strings" sous linux).
Si tu veux pouvoir modifier ta string il te faut: allouer un espace memoire suffisant, copier dedans, puis modifier cet espace memoire (heap).
Allouer un espace non-protege, signife soit appeler malloc (new en C++, et si tu veux allouer un tableau de char new[] est l'operateur correct), soit declarer un tableau de taille suffisante (par ex. char pString[250];)
Ensuite le reste devrait fonctionner.
Pour plus de renseignements sur les sections d'un binaire voici quelques mots clefs : elf, objdump, nm, stabs
Je savais déjà que c'était possible avec un tableau. Mais ce que je veux savoir
c'est si ça se fait a l'aide de pointeurs seulement.
On oublie les tableaux et les types string la. Et pour ce qui est de malloc ou new, ça donne le meme résultat.
Je trouve ça étrange que mon char * soit un constante sans que je le demande. Et en plus dans les vieilles versions de visual c++ le code de mon message original fonctionnait.