je suis en train de faire un programme qui bouffe pas mal de mémoire.
après une petite mise a jour du code, il s'est mis a planter au milieu d'une routine qui marchait parfaitement avant.
j'ai donc ajouté un peu de code pour débugger
----------------------------------------------------------------------------------------------------------------
int load_advances(FILE *fp){
int i;
printf("1"); //debug
fread(&al,sizeof(int),1,fp);
printf("2<%d>(%lu)",al,HeapAvail()); //debug
printf("<%lu>",HeapMax()); //debug
ap = (advance *)malloc_throw(al * sizeof(advance));
printf("3"); //debug
fread(ap,sizeof(advance),al,fp);
printf("4"); //debug
for(i=0;i<al;i++){
if(ap[i].num_adv_required){
ap[i].adv_required = (char *)malloc_throw(ap[i].num_adv_required * sizeof(char));
fread(ap[i].adv_required,sizeof(char),ap[i].num_adv_required,fp);
}
ap[i].name = (char *)malloc_throw(30 * sizeof(char));
if(ap[i].name_length){
fread(ap[i].name,sizeof(char),ap[i].name_length,fp);
}
}
printf("5"); //debug
return 1;
}
----------------------------------------------------------------------------------------------------------------
et là, horreur! la calculatrice (en fait il s'aggit de VTI) plante a l'appel a HeapMax()! (ça plante aussi avec un HeapMax() sans printf())
(pour info, le HeapAvail() renvoye 111568 et je touche au maximum 2 x 17ko de données.)
donc j'y comprends rien. déjà que mon programe plate là où il marchait avant et en plus une fonction toute bête comme HeapMax() le fait planter.
je cherche une explication enfin de l'aide quoi. (parceque là ça bloque vraiment tout)