Bonjour,
J'essaye d'initialiser des structures par un appel de fonction qui retourne l'adresse mémoire de la structure fraichement crée. Lorsque je compile, l'execution crash m'indiquant que j'essaye d'écrire à l'adresse mémoire 0x0000000000. voici le code :
=======================================================
Déclatation
=======================================================
struct sData{ // structure globale
char label[16];
unsigned int value;
unsigned int slaveAddr; /* Modbus communication use addr "0" to broadcast and 1 to 247 to address a node. 248 to 255 are reserved addresses. To be convert in Hex */
/* According to the ATI100 transfer panel, broadcast adresse only usable for writing functions (6 and 16). */
unsigned int functCode;
unsigned int addr;
unsigned int data;
unsigned int crc16;/* ModBus define two function to compute the CRC : RTU and ASCII. ATI100 use RTU */
};
*
char * label = NULL; // variable déclarée dans le main puis initialiser
label = tableLabel[idReq]; // Un tableau à deux dimensions qui contient des chaines de caractères
struct sData * createStruct(unsigned int code, char * label){
struct sData * pSubStruct = (struct sData*) malloc( sizeof(struct sData*));
pSubStruct->label = label;
pSubStruct->addr = code;
pSubStruct->slaveAddr = 0x05;
pSubStruct->functCode = 0x03;
pSubStruct->data = 0x02;
pSubStruct->crc16 = NULL;
return &pSubStruct;
};
Dans la fonction createStruct( ) je peux vérifier que le contenu de label pointe bien sur la la case de mon tableau. Cependant je n'arrive pas a faire rentrer mon label dans ma structure. je dois dire que j'ai du mal a comprendre les déréférencements et valeurs pointées lorsque qu'il s'agit de structure
Merci