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