• # memset vs {0}

    Posté par . En réponse à la dépêche Nouveautés du langage C dans sa prochaine version C23. Évalué à 6.

    Quand est il du padding ?

    Lorsque j’ai une structure :

    struct s {
     short a;
     long b;
    } 
    // Une fonction avec allocation automatique de la variable
    int maFct()
    {
     struct s s1 = {0};
     struct s s2;
     memset(&s2,0,sizeof(struct s));
     s1.a = s2.a = 4;
     s1.b = s2.b = 6;
     if (s1 != s2) printf("BUG !!!\n");
     return 0;
    }

    Les deux octets entre le champ a et b contiennent ce qui se trouve dans la pile. l’initialisation avec les accolades initialise elle également ces octets comme le fait le memset ?