Je voulais savoir si quelqu'un peut m'expliquer comment realloc fonctionne aux niveaux de la mémoire en faite?
Je sais que ça réalloue une zone comme son l'indique, mais la réallocation comment se fait-elle?
Merci
Je voulais savoir si quelqu'un peut m'expliquer comment realloc fonctionne aux niveaux de la mémoire en faite?
Je sais que ça réalloue une zone comme son l'indique, mais la réallocation comment se fait-elle?
Merci
Tout est dans le man :Envoyé par theshark85
http://man.developpez.com/man3/realloc.3.php
Ouai je savais déjà tout ça, moi ce qui m'interessait c'était de comprendre un peu plus loin, savoir pourquoi quand on fait un realloc en size +1 et un realloc en size +1000 ça va pas réagir de la meme façon.
Si cela est du au faite que quand on realloue la memoire, il faut que la mémoire disponible soit contigue à l'ancienne place prise ...
Le langage C défini l'interface de la fonction et son comportement. Pas les détails internes de réalisation qui n'interessent que ceux qui veulent implémenter la fonction.Envoyé par theshark85
.
Il n'y a donc pas de réponse définitive. Il y a certainement différentes façons de faire, mais tout dépend de l'implémentation. Pourquoi tu veux connaître ces détails ?
Si tu y tiens, cherches des implémentations de realloc() sur le web.est ton ami...
Je vouslais savoir ceci, par curiosité et pour comprendre certaine chose.
Comme par exemple pourquoi quand l'on fait un realloc, et quon regarandi en faisant +1 ou +200 ça ne reagit pas de la memem maniere.
Peut etre un peu trop poussé ma question.
Peut-être en récupérant les source de la GLibC, sait-on jamais !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Tu peux le redire en français ? Tu es limite incompréhensible...Envoyé par theshark85
En gros, j'ai appris que quand on fait un realloc, si on a un tableau de 10 et q'uon veut un tableau de 10+1, il a chercher une zone mémoire de 11. Puis il copie la zone de 10 dans celle de 11 et ma réallocation ets faite.
Pour ma part, je fais un realloc de tableau de , en faisant grossir mon tableau de taillestruct+1 a chaque nouvelle valeur. Au bout d'un moment le realloc plante. Alors que si je fais mon realloc, en grossissant mon tableau en faisant taillestruct+200 (quand il faut bien sur pas pour chaque nouvelel valeur) ça ne plante pas. Ne renvoie pas NULL le realloc.
VU_nbtab=> nombre d'element dans le tableau
VU_alloc=> nombre de zone alloue
Ne plante pas:
Plante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(Liste[PosCol]->VU_nbtab==Liste[PosCol]->VU_alloc) { Liste[PosCol]->VU_alloc=Liste[PosCol]->VU_alloc+500;/*On fait +500 car si on fait +1 quand il faut traiter de gros fichier probleme de realloc*/ Liste[PosCol]->tab_VU= (VALEUR**) realloc (Liste[PosCol]->tab_VU,(Liste[PosCol]->VU_alloc+1) * sizeof(VALEUR*)); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part Liste[PosCol]->tab_VU= (VALEUR**) realloc (Liste[PosCol]->tab_VU,(Liste[PosCol]->VU_nbtab+1) * sizeof(VALEUR*));
Partager