2010-03-31 4 views
0

Heyy Tout le monde! Je suis en train de créer un système de gestion de la mémoire, de sorte qu'un utilisateur peut appeler myMalloc, une méthode que je crée. J'ai une liste liée gardant trace de ma mémoire libre. Mon problème est quand j'essaye de trouver la fin d'un peu libre dans ma liste liée. Je tente d'ajouter la taille de la mémoire libre dans cette section (qui est dans la liste chaînée) au pointeur vers l'avant de l'espace libre, comme celui-ci. J'espérais que cela me donnerait un pointeur vers la fin de ce segment. Cependant, je continue à recevoir l'avertissement:Question sur pointeur Arithmétique

« pointeur de type « void * » utilisé en arithmétique »

Y at-il une meilleure façon de le faire? Merci!

Répondre

5

arithmétique pointeur utilise la taille du type sous-jacent. Si int est égal à 4 octets:

int *p = some_address; 
p++; 

va incrémenter p de 4 octets. void ne peut pas être utilisé dans l'arithmétique du pointeur car void n'a pas de taille associée. Si vous voulez faire de l'arithmétique de taille octet sur les pointeurs vides, vous devez jeter les pointeurs vers un type de taille octet.

1
int *tailEnd = (int*) (previousPlace->head_ptr + ((previousPlace->size+1)*(sizeof(int))); 
+0

Merci !! Et pour quelqu'un d'autre référençant ceci, je devrais également noter que vous pouvez renvoyer ceci à un vide * après si nécessaire. – pws5068