Éviter les fuites de mémoire : quand fermer MemoryStream dans .NET
Les développeurs rencontrent souvent des questions concernant la nécessité de fermer manuellement un MemoryStream dans .NET code. Pour résoudre ce problème, envisagez le scénario suivant :
MemoryStream foo() { MemoryStream ms = new MemoryStream(); // Write data to ms return ms; } void bar() { MemoryStream ms2 = foo(); // Process ms2 data return; }
Ce code présente-t-il un risque de fuite de mémoire avec le MemoryStream alloué ?
Réponse :
Selon l'implémentation actuelle, il n'y a aucun risque de fuite de mémoire dans le code fourni. L’appel de Dispose sur MemoryStream n’accélérera pas le nettoyage de la mémoire. Cependant, cela empêche le flux d'être réutilisé en lecture ou en écriture après l'appel.
La suppression de MemoryStream peut ne pas être nécessaire s'il existe une certitude absolue qu'il ne sera jamais converti en un type de flux différent. Cependant, il est généralement conseillé de disposer pour deux raisons :
Par conséquent, même si le code actuel ne crée pas de fuite de mémoire, la suppression de MemoryStream est toujours recommandée à titre de bonne pratique et pour éviter des problèmes potentiels à l'avenir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!