IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[C] Probleme memoire partagee


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut
    Problème résolu :

    Il vient du fait que j'utilise un pointeur pour remplir ma SHM, mais que je ne remet pas le pointeur au début de ma SHM avant de la renvoyer.

Discussions similaires

  1. Mémoire partagée probleme lors de shmat()
    Par breezer911 dans le forum Linux
    Réponses: 3
    Dernier message: 20/05/2008, 18h20
  2. Mémoire swap et mémoire partagée
    Par Invité dans le forum Administration système
    Réponses: 6
    Dernier message: 16/12/2005, 16h39
  3. [ASE]probleme memoire: select dans une insert
    Par SegmentationFault dans le forum Sybase
    Réponses: 2
    Dernier message: 16/08/2005, 12h20
  4. Eclipse UML, JVM - Problème mémoire - Mandrake ?
    Par chat hotplug dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 02/08/2005, 14h05
  5. segment memoire partagee, thread, ou autre?
    Par Pouic dans le forum POSIX
    Réponses: 9
    Dernier message: 26/10/2004, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo