Tables de hachage rapides et tableaux dynamiques en C

2025-01-22

Cet article montre comment implémenter rapidement en C des équivalents aux `std::unordered_map` et `std::vector` de C++. En utilisant un alloueur personnalisé, des chaînes de caractères comptées et une fonction de hachage efficace, l'auteur présente des implémentations de tables de hachage plates et hiérarchiques, ainsi qu'un tableau dynamique. L'article couvre également la concaténation de chaînes, la manipulation des variables d'environnement et la sécurité améliorée des tables de hachage, en utilisant l'Address Space Layout Randomization (ASLR) pour améliorer la résistance aux collisions.

Lire plus

Règles pour éviter les erreurs courantes dans l'assemblage inline étendu

2024-12-21

Cet article n'est pas un tutoriel sur l'assemblage inline, mais plutôt un résumé de six règles pour éviter les erreurs courantes. L'auteur souligne que l'assemblage inline est perfide et doit être évité autant que possible, car les compilateurs modernes offrent des intrinsèques et des fonctions intégrées pour la plupart des cas d'utilisation. Si inévitable, les règles sont : utiliser le qualificateur `volatile` ; utiliser un `memory` clobber si la mémoire est accédée ; ne jamais modifier les contraintes d'entrée ; ne jamais appeler de fonctions depuis l'assemblage inline ; ne pas définir d'étiquettes d'assemblage absolues ; et utiliser la fonctionnalité d'étiquettes locales de l'assembleur pour éviter les conflits d'étiquettes. L'article conclut en encourageant les lecteurs à pratiquer l'application de ces règles en examinant des tutoriels en ligne et même du code généré par LLM.

Lire plus