Bonjour!,
J'aurais besoin d'un tout petit �clairsissement...
imaginons :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class String{ private: char* value; public: ... char* value(){return value;}; char* toupper(){ char tempo[strlen(value)+1]={'\0'}; for(int i=0;i<strlen(value);t++) tempo[i]=toupper(value[i]); return tempo; }; }; int main(void){ String s; char *p; s = "une valeur"; s = s.toupper(); //Reaffectation d'une variable locale ? p = s.toupper(); ... ... ... *p=0; //Dangereux ? return EXIT_SUCCESS; }
Le but de m�thodes telle que toupper est essentiellement de r�utiliser imm�diatement la valeur de retour pour une assignation.
Cependant il se pourait que du mauvais code conduise a l'example ou apres un certain temp un pointeur p pointe toujours sur la valeur de retour...
Ma question est :
En imaginant que l'operateur = ait �t� surcharg� de fa�on a copier le contenu de la valeur re�ue dans value:
- Est ce que r�affecter la variable locale tempo est dangereux du fait qu'elle ne soit pas sur le heap ?
- Idealement vaudrait-il mieu stocker tempo en variable membre de la classe String et l'utiliser pour tout une s�rie d'op�rations (qui ne modifient pas la valeur pass�e) comme toupper, ceci de fa�on a toujour etre certain de retourner un emplacement m�moire "sur" ?
- Ceci est-il g�r� par les compilateur ou les environements r�cents ?
- Enfin ceci est-il bon pour la portabilit� (syst�mes d'exploitations pouvant avoir un mauvais management de la m�moire en g�n�ral par example) ?
Voila, c'est une qestion toute bete et je voudrais etre certain de ne pas faire de betises.
Partager