[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] comportement curieux de malloc



Le Sat, 29 Sep 2012 17:01:30 +0200
Bzzz <lazyvirus@gmx.com> a écrit:

> Qu'est-ce que tu entends par "par le haut", une pile est une pile;
> après suivant qu'elle soit LIFO ou FIFO c'est la logique du niveau
> juste au-dessus de ton morceau de code qui détermine ça - et que les
> adresses de ses éléments soient croissantes ou décroissantes ou
> aléatoires n'a que peu d'incidence (sauf en cas de débordement du
> segment).
> 


Ce n'est pas mon code, c'est le code de camllight que j'essaye de débugguer.
Il y a un «heap» plaquée sur l'allocation usuelle (mais non obligatoire de
malloc: Une adresse de fin de zone fixe (heap_start) et une adresse de début
de zone variable (notons la heap_end), on a donc head_end < heap_start. Lors
d'un besoin, un malloc(taille_demandée) est fait et renvoit *généralement* et
pas obligatoirement comme l'a souligné Erwan un pointeur valant head_end -
taille_demandée. C'est vrai que ça marche souvent, ça marche de façon bizarre
si je fais une suite malloc-free-malloc au lieu de malloc, mais c'est clair
que c'est non satisfaisant. Il y a donc comme solutions
* réecrire tout le bazar: avec ocaml, c'est peut être idiot
* se contenter de ma rustine... bof.
* essayer de voir si il y a moyen d'assurer un mécanisme faisant grossir le
«heap» tel que voulu.

François Boisson


Reply to: