2.
Il n’y a pas de risque de fuites mémoires.
Détaillons en effet ce qui se passe en cas
de génération d’exception : si l’opérateur
new()
lance une exception
bad_alloc
, comme
le tableau d’objets
T
n’a pas encore été alloué, il n’y a donc pas de risque de fuite ; si la
construction d’un des objets
T
alloué échoue, le destructeur de
Stack
est automatique-
ment appelé (du fait qu’une exception a été générée au cours de l’exécution de
Stack::Stack
), ce qui a pour effet d’exécuter l’instruction
delete[]
, laquelle effectue
correctement la destruction et la désallocation des objets
T
ayant déjà été alloués.
Partager