Retourner au contenu associé (entrée de forum : passer une struct dans une shared memory POSIX)
Posté par galactikboulay le 14 avril 2005 à 08:58. En réponse au message passer une struct dans une shared memory POSIX. Évalué à 2.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Pointeur non initialisé
Posté par galactikboulay . En réponse au message passer une struct dans une shared memory POSIX. Évalué à 2.
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.