Modifier une variable via un pointeur

Modifier une variable via un pointeur

by Pierre Louis Sintre -
Number of replies: 4

Bonjour,

J'ai une erreur dans mon code que je n'arrive pas à comprendre : en simplifiant le problème, j'ai deux objets x et y (de la même classe), et un pointeur vers x : px ; je veux assigner à x la valeur y, à travers le pointeur px ; j'ai donc écrit la ligne :

*px = y;

Cette commande devrait marcher, car en l’implémentant par exemple avec x et y étant des int, il n'y a aucun problème. Cependant, dans mon cas, j'ai une erreur :

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

Je me demandais donc si quelqu'un avait une idée sur l'origine de ce problème ; d'après mes recherches, bad_alloc semble apparaître lorsqu'on essaie d'assigner à une variable une donnée trop volumineuse ; or, ici ce n'est pas le cas...

Merci d'avance !

Pierre Sintre

In reply to Pierre Louis Sintre

Re: Modifier une variable via un pointeur

by Josué Antoine Maechling -

Normalement ça peut fonctionner, en tout cas avec une classe assez simple ça marche.

As-tu surchargé l'opérateur "=" ? Ou as-tu un constructeur de copie ?

Et l'erreur bad_alloc c'est juste pour signaler un échec d'allocation, en tout cas d'après la doc ( https://en.cppreference.com/w/cpp/memory/new/bad_alloc )

In reply to Josué Antoine Maechling

Re: Modifier une variable via un pointeur

by Pierre Louis Sintre -
Je viens de surcharger l'operator=, et de faire le constructeur de copie et le destructeur  ; le problème semble persister...
In reply to Pierre Louis Sintre

Re: Modifier une variable via un pointeur

by Josué Antoine Maechling -
C'est difficile de te donner plus d'indications sans voir ton code, je ne connais pas toutes les causes de cette erreur mais en voyant sur internent à mon avis c'est peut-être dû à un problème d'héritage, avec des destructeurs de la super classe éventuellement, ou encore à une mauvaise allocation de base de tes objets.

Envoie moi ton code dans le doute...on va bien trouver...      josue.maechling@epfl.ch

In reply to Josué Antoine Maechling

Re: Modifier une variable via un pointeur

by Josué Antoine Maechling -

Pour les autres : Au final l'erreur était liée à un double delete.

Des toupies étaient créées dans le main et données à Systeme qui prenait juste des pointeurs sur ces Toupies. À la fin du main elles sont détruites mais le destructeur de Systeme essayait aussi de les détruire.