Allocation dynamique en C++

Résolu
twiiiix Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
twiiiix Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -
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

Rctll Messages postés 499 Date d'inscription   Statut Membre Dernière intervention   1 522
 
non ( c'est un cas classique de fuite mémoire)
4
twiiiix Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   57
 
Merci, mais Est-ce qu'a la fin du programme il sera quand même désallouer ?
0
Pacorabanix Messages postés 3248 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
twiiiix Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   57
 
OK, Merci
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
twiiiix Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   57
 
connais-tu un bon profiler ?
0