Comment corriger cette erreur ds mon code C

Fermé
samsouma04 Messages postés 60 Date d'inscription samedi 26 juillet 2008 Statut Membre Dernière intervention 17 mai 2009 - 17 oct. 2008 à 10:37
 samsouma04 - 17 oct. 2008 à 12:20
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

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
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