youdontcare a écrit a écrit :
ce genre de trucs :
char* monMessage = "bonjour !";
n'a pas besoin d'être désalloué "à la main". c'est le compilateur qui l'alloue, c'est le compilateur qui le désalloue.
|
Merci pour l'info, je ne le savais pas .
Cepedant, dans le dernier cas que j'ai présenter, à savoir
Quoiqu'il en soit, avec ceci:
char **T = new char*[3];
T[0] = new char[1];
T[1] = new char[5];
T[2] = new char[5];
T[0] = "5";
T[1] = "couco";
T[2] = "prout";
for (int i=0; i<=2; i++) {delete[] T[i];}
delete[] T;
Pourquoi le "delete[] T[i]" déconne-t-il étant donné que j'ai allouer manuellement l'espace mémoire par les T[i] = new chat[x] ??
Edit: oki, je pense avoir capté...
=> Si j'ai bien compris, pour T[1] par exemple, j'alloue un espace mémoire de 5 char, cet esapce mémoire étant pointé par T[1].
Seulement quand je fais un T[1] = "coucou", il ne met pas "coucou" dans l'espace mémoire précédement alloué mais dans un espace mémoire qu'alloue le compilateur.
Ce qui revient à dire que l'espace mémoire que j'avais précédement alloué est perdu.
C'est bien ça ?
Edit2: donc, je dois mettre ceci ?
char **T = new char*[3];
T[0] = "5";
T[1] = "couco";
T[2] = "prout";
delete[] T;
[jfdsdjhfuetppo]--Message édité par Majca Jalasu le 06-05-2002 à 13:56:59--[/jfdsdjhfuetppo]