Bonjour,
Je débute en C. Je m'inspire du code proposé ici pour créer des classes me permettant de gérer facilement les sémaphores et segments de mémoire partagée.
Fichier ipcobj.h
Fichier ipcobj.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct sIPCObject{ int iSemNbr; int iSemId; }; struct sIPCObject *sIPCObject_new(int, int); void sIPCObject_Delete(struct sIPCObject **this); int sIPCObject_getSemNbr(struct sIPCObject *this); void sIPCObject_CreateSem(struct sIPCObject *this);
Ensuite, je crée un objet sIPCObject avec :
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 #include <sys/sem.h> #include <sys/shm.h> #include <ipcobj.h> struct sIPCObject *sIPCObject_new(int iSemNbr, int iSemId) { struct sIPCObject *p = (struct sIPCObject *)malloc (sizeof (struct sIPCObject)); if (!p) return NULL; p->iSemNbr = iSemNbr; return p; } void sIPCObject_Delete(struct sIPCObject **this) { if(*this) free(*this); *this = NULL; }
L'affectation de la variable iSemNbr me provoque un Memory fault(coredump).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct sIPCObject *myIPCObjet; int main(int argc, char *argv[]) { myIPCObjet = sIPCObject_new(1, 1); sIPCObject_Delete(&myIPCObjet);
Partager