Allocation dynamique en C++

Résolu
twiiiix Messages postés 342 Statut Membre -  
twiiiix Messages postés 342 Statut Membre -
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

  1. Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 535
     
    non ( c'est un cas classique de fuite mémoire)
    4
    1. twiiiix Messages postés 342 Statut Membre 57
       
      Merci, mais Est-ce qu'a la fin du programme il sera quand même désallouer ?
      0
    2. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      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 ... )
      0
    3. twiiiix Messages postés 342 Statut Membre 57
       
      OK, Merci
      0
    4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      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.
      0
    5. twiiiix Messages postés 342 Statut Membre 57
       
      connais-tu un bon profiler ?
      0