• # Pointeur non initialisé

    Posté par . En réponse au message passer une struct dans une shared memory POSIX. Évalué à 2.

    Dans ps3.c, tu fais:

    caddr_t shm_ptr1;

    struct transport* transp_shm_ptr1 = (struct transport*) shm_ptr1;
    trajet = *transp_shm_ptr1;

    shm_ptr1 n'est pas initialisé. Tu mets cette valeur dans trans_shm_ptr1;
    Tu accèdes à la zone mémoire pointée par trans_shm_ptr1 ensuite.
    Et *boum*.

    Le code correct serait:

    struct transport* transp_shm_ptr1;

    [...]
    shm_ptr1 = mmap ((caddr_t) 0, 3, PROT_READ, MAP_SHARED,shm_etage1, 0 );
    transp_shm_ptr1 = (struct transport*) shm_ptr1;

    trajet = *transp_shm_ptr1;


    Tout cela n'enlève rien à la très pertinente remarque de pasBill sur le fait
    que tu DOIS tester le code de retour des fonctions.