Référence sur un entier dynamiquement alloué et dont la mémoire été libérée
Le
louisbethune1997

Salut tout le monde !
Petit passage en coup de vent, pour poser rapidement une petite question.
Comment se fait-il qu'un tel programme s'exécute normalement chez moi san=
s erreur ? Que dit le norme à ce sujet ? Car je soupçonne là une aber=
ration (je l'ai fait pour l'expérience d'ailleurs ).
#include <iostream>
int main()
{
int *pi = new int;
int &ri = *ip;
delete pi;
ri = 5;
std::cout << ri << '';
}
Cette situation produit-elle un résultat indéterminé ou a-t-il ét=
é prévu que cela fonctionne toujours de la même manière ?
Merci d'avance !
Petit passage en coup de vent, pour poser rapidement une petite question.
Comment se fait-il qu'un tel programme s'exécute normalement chez moi san=
s erreur ? Que dit le norme à ce sujet ? Car je soupçonne là une aber=
ration (je l'ai fait pour l'expérience d'ailleurs ).
#include <iostream>
int main()
{
int *pi = new int;
int &ri = *ip;
delete pi;
ri = 5;
std::cout << ri << '';
}
Cette situation produit-elle un résultat indéterminé ou a-t-il ét=
é prévu que cela fonctionne toujours de la même manière ?
Merci d'avance !
C'est du comportement indéfini, ce qui veut dire que n'importe
ce qui se passe, l'implémentation est correcte. Dans ton cas, on
pourrait bien imaginer une implémentation pour le débogguage
qui génère une erreur, mais je n'en connais pas où il ne
marcherait pas par défault.
--
James