Comment corriger cette erreur ds mon code C

samsouma04 Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -  
 samsouma04 -
static void *getpage(PAGETYPE type)
{
void *buffer;
PAGE *newpage;

if (max_alloc > 0 && cur_alloc + PAGESIZE + sizeof(PAGE) > max_alloc)
return NULL;

if ((newpage = malloc(sizeof(PAGE))) == NULL ||
(buffer = malloc(PAGESIZE)) == NULL) {
if (newpage != NULL)
free(newpage);
return NULL;
}

memset(buffer, 0, PAGESIZE);

newpage->start = buffer;
newpage->end = buffer + PAGESIZE;
newpage->count = 0;
newpage->size = (type == NODE ? NODES_PER_PAGE
: (type == LEAF ? LEAFS_PER_PAGE
: INTLEAFS_PER_PAGE));
newpage->next = pagelist;
pagelist = newpage;

cur_alloc += PAGESIZE + sizeof(PAGE);

return buffer;
}
l'erreur est: 'void *' : unknown size
l'erreur est sur la ligne newpage->end = buffer + PAGESIZE;
Merci d'avance
A voir également:

2 réponses

toto
 
Bonjour

en C, quand tu fais pointeur+decalage, le compilateur tient compte du type de pointeur pour décaler l'adresse de 1,2,4 etc... fois décalage selon la taille du type d'objet pointé.
Comme ton pointeur est de type void, la taille du type d'objet pointé c'est la taille de void (si on peut dire..), et void n'a pas de taille.
Je suppose que tu voulais ajouter une taille en octets, tu peux tromper le compilateur en faisant un type cast (char *)
0
samsouma04
 
merci mais je change quoi exactement dans mon code? car jai essayé dajouter une taille et ca n'a pas marché pe etre jai pa su comment le faire!!!!
Merci davance
0