• [^] # Re: volatile ?

    Posté par (site web personnel) . En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 4. Dernière modification le 21 janvier 2025 à 09:30.

    Effectivement !
    Et en effet si tu regardes, c'est ce qui est fait ici dans le pire des cas :

    // ici on gère toutes les architectures connues
    #else
    static void* (*volatile memset_explicit_unk)(void*, int, size_t) = memset;
    #endif
    

    Je dis le "pire", car cela fait une indirection qui tape sur le pointeur de fonction de la lib C.

    Très suffisant bien sûr ! Mais juste potentiellement moins efficace que d'avoir soit :
    - une implémentation locale qui tirerait un assembleur adapté ;
    - son propre assembleur adapté :-)
    et le fait que ça verrouille une petite zone mémoire pour le besoin.

    (tu le sais bien sûr, mais je précise pour les non-initiés : il ne faut pas appliquer "volatile" sur la variable de la zone à effacer -ici "password"- mais sur l'appel de fonction comme ci-dessus)