Comment fonctionnent __attribute__((constructeur)) et __attribute__((destructeur))
Quand fonctionne __attribute__((constructeur)) Exécuter ?
Cet attribut s'exécute lorsqu'une bibliothèque partagée est chargée, généralement lors du démarrage du programme.
Pourquoi deux parenthèses ?
Tous les attributs GCC suivent cette syntaxe, probablement pour les distinguer des appels de fonction.
La nature des attributs
attribut est spécifique à GCC syntaxe, pas une fonction ou une macro.
Compatibilité
__attribute__((constructor)) et __attribute__((destructor)) fonctionnent à la fois en C et en C.
Exigence statique de fonction
Les fonctions attribuées à __attribute__((constructor)) et __attribute__((destructor)) n'ont pas besoin d'être statiques.
__attribute__((destructor)) Run Time
Le destructeur s'exécute lorsque la bibliothèque partagée est déchargée, généralement à la sortie du programme.
Constructeur et Mécanique des destructeurs
Les fichiers objets partagés contiennent des sections spéciales (.ctors et .dtors) qui font référence à des fonctions marquées avec des attributs de constructeur et de destructeur. Le chargeur dynamique appelle ces fonctions lors du chargement et du déchargement de la bibliothèque. Des mécanismes similaires existent dans l'éditeur de liens statiques pour le démarrage et l'arrêt.
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!