[VC++2005] malloc et realloc
Bonjour ,
dans la portion de code suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
struct KprotoPckt{
uint8_t Type; // Type de trame
uint16_t Checksum; // Reçue du Réseau
uint16_t DataLength; // Reçue du Réseau
uint8_t Serial[SERIAL_NUMBER_LENGTH]; // Numéro de série du produit
uint8_t *Data; // Les données transportées
};
if(KprotoPckt->Data)
KprotoPckt->Data=realloc(KprotoPckt->Data,KprotoPckt->DataLength * sizeof(uint8_t *));
else
KprotoPckt->Data=malloc(KprotoPckt->DataLength * sizeof(uint8_t *));
if(KprotoPckt->Data == NULL){
datation(); printf("Error: can't allocate memory for a RX packet !!! \n");
free(KprotoPckt->Data);
return;
} |
j'ai un plantage au niveau du realloc => Errreur allocation de memoire
Je libere bien la memoire apres traitemement comme ce-ci:
Code:
1 2 3 4 5
|
if(KprotoPckt.Data != NULL){
free(KprotoPckt.Data);
KprotoPckt.Data=NULL;
} |
d'ou peux provenir le probleme ?
est ce une incompatibilite de mon systeme ? je suis sur XP ?
J'utilise Visual Studio 2005, peut etre qu'il existe une directive de compilation pour eviter cela ?
que veux dire le message exactement ? est ce que ca veut dire qu'il n'arrive plus a allouer du tas au niveau memoire ?
est ce au niveau de la memoire vive?
Est ce un probleme de cadrage au niveau memoire ?
j'ai 2go de ram.
Merci de votre aide.