C prend-il en charge les blocs « finally » et quel est l'idiome RAII ?
Contrairement à d'autres langages, C ne prend pas explicitement en charge « finally » blocs. Au lieu de cela, il adopte l'idiome RAII (Resource Acquisition Is Initialization).
L'idiome RAII
RAII est une technique dans laquelle le destructeur d'un objet devient responsable de la libération de toutes les ressources qu'il acquiert. Cela garantit que les ressources sont correctement libérées lors de la destruction d'un objet, quel que soit le chemin de sortie (y compris les exceptions).
Voici un exemple d'utilisation de RAII pour verrouiller un mutex :
class lock { public: lock(std::mutex& m) : m_(m) { m.lock(); } ~lock() { m_.unlock(); } std::mutex& m_; }; void foo() { lock scopeLock(mutex_); // Some operation that may throw an exception }
Dans ce Par exemple, le destructeur de l'objet 'lock' libérera le mutex, même en cas d'exception.
RAII vs. Déclaration « using » de C#
Les déclarations « using » de RAII et de C# sont conçues pour garantir une libération déterministe des ressources. La principale différence entre les deux est que RAII peut être utilisé pour n'importe quel type de ressource, y compris la mémoire, tandis que l'instruction .NET 'using' est principalement destinée à libérer des ressources non mémoire.
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!