[C] Probleme memoire partagee
Bonjour à tous !
Voila j'ai un petit souci en utilisant ma memoire partagee dans mon programme...
Voici la fonction qui l'initialise :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| byte* SHM_init(mem_t* mem, size_t shm_size){
//Creation SHM
int i,j;
if((shmid = shmget((key_t)401 , shm_size , IPC_CREAT|0666)) == -1){
fprintf(stderr,"SHM_init : Erreur lors de la creation de SHM\n");
exit(-1);
}
//Attachement
byte* shm = (byte*)shmat(shmid , NULL , 0);
if(shm == (void*)(-1)){
fprintf(stderr,"SHM_init : Erreur lors de l'attachement\n");
exit(-1);
}
//Joueurs
(*shm) = (byte)mem->nbMaxJ; shm++;
(*shm) = mem->nbJoueurs; shm++;
for(i=0 ; i<(ceil((mem->nbMaxJ)/8)) ; i++){
(*shm) = mem->statutJoueurs[i];
shm++;
}
/* ... */
printf("Initialisation SHM terminee\n");
return shm;
} |
Le souci, c'est qu'un printf a la fin de cette fontion sur shm[0] par exemple me retourne 0 et non la valeur qui était dans mem->nbMaxJ.
Ensuite, je me demande si ma fonction va marcher ailleurs , c'est à dire que je retourne un pointeur sur ma memoire partagee, je vais l'utiliser dans mon main, puis j'apellerais une fonction qui le detachera et detruira ma memoire partagee. Est-ce correct ?
VOila merci !!