• # ça marche, un peu...

    Posté par . En réponse au message Malloc et pointeur sur structure anonyme. Évalué à 2.

    map[i][j] = malloc (sizeof(Case));
    map[i][j]->type = VIDE;
    
    

    ça marche parce que "type" est le premier membre de ta structure est que "VIDE" à une taille inférieure à sizeof(void*)

    Tu assignes dans map[i][j] un pointeur vers une zone de mémoire de taille sizeof(Case) qui vaut sizeof(void), à savoir, 4 octets sur une architecture x86 et 8 sur une architecture amd64, et tu mets dedans, avec l'instruction "map[i][j]->type = VIDE", type étant le premier membre de ta structure, donc celui qui commence "au début", la valeur de VIDE, que je suppose être une macro du préprocesseur définie par 0, Si sizeof(Casetype) <= sizeof(void), ça ne pose pas de soucis d'un point de vue corruption de ta mémoire.

    Dans ton cas, pour faire les choses correctement, donnes 2 noms à ta structure, dont un qui ne correspond pas à un pointer et utilise celui là pour le malloc de plus bas niveau.