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
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);
Fichier ipcobj.c :
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;
}
Ensuite, je crée un objet sIPCObject avec :
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);
L'affectation de la variable iSemNbr me provoque un Memory fault(coredump).