Allocation dynamique en C++

Résolu
Bonjour,

J'aimerais savoir si lorsqu'on alloue en utilisant un pointeur qui pointe déjà sur un emplacement mémoire ,si l'ancien emplacement est désalloué, par exemple si on fait:
int *p ; 
p = new int ; 
*p = 12 ; 
p = new int ; 
delete p ;
Est-ce que l'emplacement qui contient la valeur 12 est désalloué ?

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. non ( c'est un cas classique de fuite mémoire)
    1. Merci, mais Est-ce qu'a la fin du programme il sera quand même désallouer ?
    2. non.

      c'est pour ça qu'on parle de fuite mémoire : le porgramme ne désalloue rien du tout, et donc la mémoire reste utilisée (selon l'OS ... )
    3. OK, Merci
    4. Contributeur
      Les OS modernes rendent la mémoire à la fin du programme (windows, Linux etc...).
      Mais cela est brutal, le destructeur n'est pas appelé. Si tu lance ton programme avec Valgrind, il te signal alors des erreurs.
    5. connais-tu un bon profiler ?