Comment corriger cette erreur ds mon code C
samsouma04
Messages postés
60
Date d'inscription
Statut
Membre
Dernière intervention
-
samsouma04 -
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
{
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:
- Comment corriger cette erreur ds mon code C
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
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 *)
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 *)