-
Suppression de variables
Bonjour,
dans une méthode est-il nécessaire de supprimer les variables manuellement avec "delete" ou sont-elles supprimées automatiquement lorsque le système détermine que l’objet n’est plus accessible ?
3 cas de figure :
Code:
array< Byte >^ mybytes = gcnew array< Byte >(size);
Code:
uint8_t* buf = mybytes.bytes;
Code:
const uint8_t* test = "test";
Merci
-
Bonjour,
La règle est simple : on doit utiliser l'opérateur delete sur les objets alloués avec l'opérateur new. Et on doit utiliser l'operateur delete[] sur les objets alloués avec l'opérateur new[taille].
Et comme utiliser new et new[] est une très très mauvaise idée, tu peux directement "oublier" delete.
Quant à tes 3 exemples:
- le premier est alloué par le garbage collector, il est sous la responsabilité du garbage collector qui le détruira quand ça lui chante.
- le second est un pointeur qui désigne une zone sous la responsabilité du garbage collector. C'est à éviter car est directement lié a un objet qui peut "évoluer" sans prévenir.
- le troisième pointe sur un zone garantie valide pendant toute la durée du programme.
En aucun cas on ne doit utiliser delete sur ces 3 objets.
-