malloc & free
Jiri Kosina
jikos na jikos.cz
Pondělí Leden 30 15:38:44 CET 2006
On Mon, 30 Jan 2006, Libor Chocholaty wrote:
> Mam pocit, ze proces od kernelu muze pamet jen dostat nikoli vratit. Na
Volanim munmap() muze pamet vratit. brk() muze byt take zavolan s
negativni velikosti (typu ptrdiff_t), coz ma take za nasledek zmenseni
velikosti pridelene pameti (a brk() na zaporny argument beztak neudela nic
jineho, nez ze prislusny kus odmapuje volanim do_munmap, tedy stejne jako
v pripade zavolani munmap() z userlandu).
> to by melo slouzit volani brk(2). Programu pak malloc dava pozadovanou
> pamet z pameti alokovane procesu. Kdyz si ji proces prilis rozseka
> (fragmentace) nezbyva nez aby malloc(3) pozadal kernel o dalsi kus
> pameti pomoci brk(2). Pokud pozadovany kusanec je k dispozici a
> nepresahne limit procesu, tak ji dostane, v ostatnich pripadech... man
> brk man malloc
Nerozumim co ma byt cilem sdeleni.
Proste pokud je virtualni adresni prostor prilis fragmentovany, tak vrati
ENOMEM, i kdyz je v absolutni hodnote pameti jeste dost.
--
JiKos.
Další informace o konferenci Linux