Plantage sur une desallocation d'une structure sous Windows 2003

Plantage sur une desallocation d'une structure sous Windows 2003 - C - Programmation

Marsh Posté le 16-11-2005 à 11:13:51    

Bonjour,
 
J'ai un plantage sur la desallocation d'une structure sous Windows 2003
 
J'ai une structure patient de ce type:
 
  struct st_patient {
     char NOIP[11]   ; /* 'NIP du patient'; */
     char NMMAL[21]  ; /* 'Nom du malade'; */
     char NMPMAL[16] ; /* 'Prenom du malade'; */
     char NMPATR[21] ; /* 'Nom patronymique '; */
     char CDSEXM[2] ; /* 'Sexe du malade (F, M, I)'; */
     char DANAIS[11] ; /* 'Date de naissance'; */
     char CDDNIN[2]     ; /* 'Validite date de naissance ('I', 'O'); */
      };
#define LPSTR_PATIENT struct st_patient FAR *  
 
et dans mon main j'ai ca:
LPSTR_PATIENT lpstr_pat=NULL;
.... traitement/remplissage de la structure patient ...
et en fin de main j'ai ca:
 
  if (lpstr_pat){
    GlobalFreePtr(lpstr_pat);
 lpstr_pat = NULL;
  }
 
J'ai un plantage sur le GlobalFreePtr. Parfois ca plante, parfois ca marche. Pourtant quand je regarde en debug, chaque menbres de la structes est correctement affecté, et aucun d'eux n'a été désaloué ou quoi que ce soit.
 
Existe t'il une autre fonction que GlobalFreePtr? Faut t'il parcourir tout les element de ma structures pour les desalouer un par un? si oui, comme fait ton pour connaitre le nombre d'element de la structure? Faut-il déclarer un menbre "count" dans la structure, ou existe t'il une fonction count ou autre?
 
merci pour votre aide :bounce:  :bounce:

Message cité 1 fois
Message édité par molarisapa le 16-11-2005 à 11:17:22
Reply

Marsh Posté le 16-11-2005 à 11:13:51   

Reply

Marsh Posté le 16-11-2005 à 13:19:20    

molarisapa a écrit :


J'ai un plantage sur la desallocation d'une structure sous Windows 2003


LPSTR_PATIENT lpstr_pat=NULL;
.... traitement/remplissage de la structure patient ...
et en fin de main j'ai ca:
 
  if (lpstr_pat){
    GlobalFreePtr(lpstr_pat);
 lpstr_pat = NULL;
  }




Est-ce qu'un jour 'lpstr_pat' a été initialisé avec l'adresse d'un bloc alloué libérable par GlobalFreePtr() ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 16-11-2005 à 13:20:52    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed