Question d'expérience

Résolu
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006 - 9 déc. 2005 à 16:45
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006 - 10 déc. 2005 à 17:17
Bonjour,
désolé de vous solliciter encore une fois, mais j'ai une question importante :

Dans les livres, il est dit :
Quand on recopie un objet qui contient des pointeurs vers une partie dynamique, il faut allouer une nouvelle partie dynamique, recopier le contenu et détruire l'ancienne.
Parce qu'il parait que le pointeur recopier par recopie automatique ne pointe plus correctement.

J'ai vu ça dans Programmer en C++ des editions-eyrolles, et il me semble que c'est une inepsie.

Explication :
J'ai fait un petit logiciel avec plein de partie dynamique et je recopie mes objets en automatique et tout marche bien !!
Je me demande si c'est dû à windows et je voulais savoir si vous aviez déjà eu des programme qui tourne sous windows et qui plante sous linux ?

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2005 à 17:04
Je comprends ni ce que dit le livre, ni ce que tu dis. J'aimerais un petit bout de code, mais por te répondre, un source écrit en C++ devrait avoir le même comportement sous Windows et Linux
3
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
9 déc. 2005 à 22:23
Salut,
et pourtant le livre à raison et ton programme est bogué ;)

ex:

class String {
char * s;
public :
String( char* str ) { s = new char[ strlen(str)+1); strpcy( s, str ) }
~String() { delete[] s; }
}

ex :

String fct()
{
String s( "bonjour" );
return s; // quand tu sors d'ici, le destructeur est désalloué
}

l'opérator = recopie la valeur des pointeurs donc le s de la nouvelle instance pointe vers une zone désalloué en sortant de fct.

Au pire, tu ne fais pas le delete, et ton programme fuit

Ma participation à la saturation du net:
http://hylvenir.free.fr
3
kortin Messages postés 65 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 21 avril 2006
10 déc. 2005 à 17:17
ah oui je comprend mieux, après relecture, le livre comporte en fait une ambiguité.
Oui, c'est logique, si la partie est désalloué, il faut en préparer une nouvelle, dans le cas de la POO pure.
Mais comme mon programme traite des données globales, c'est bon.
Et je sais que les résultats sous windows et sous linux sont exactement les même donc tout va bien. Le bouquin n'était pas clair.
Merci d'être plus précis encore.
Merci Hylvenir vecchio56, j'ai bien compris maintenant.
0
Rejoignez-nous