Vlákno názorů k článku Jak funguje malloc a free od kvr - Dve veci - jedna detail - jsou malloc(3)...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 4. 2003 13:27

    kvr (neregistrovaný)

    Dve veci - jedna detail - jsou malloc(3) a free(3), sbrk je taky 3, ale v manu je pod dva, nevim proc ;) Mmch, nevim, jestli se vola sbrk pri uvolneni posledniho bloku, zalezi asi na jeho implementaci, ale kdyby ano, pak to neni tak uplne cisty wrapper na brk, bo pri neustalem volani free(malloc(...)) by vse bylo tragicky pomale ;)

    K te druhe - /dev/zero se pise kde? Vzpominam-li si spravne, tak se na vetsi bloky vola kernel via MMAP_ANONYMOUS.

    ... hm, jeste jeden detail jsem si vzpomnel - stack miva velikost 2MB (na i386) bez par bytu nahore samozrejme, ktere se obsadi argv, env, pripadne thread-structama apod.

  • 3. 4. 2003 15:20

    ray (neregistrovaný)

    Zdar Kryso :)

    No, /dev/zero se opravdu pouziva pro volani mmap (jakou source). Znas to, necht zije kompatibilita. Nektere kernely umi prez flag 'ignorovat' srouce a to je to o cem mluvis. #ifdef rulez :\ sbkr je dneska uz povetsinou pase, protoze neumoznuje udelat poradny memory management (NUTNOST pro vetsi projekty) a deska vicemene vsechny 'lepsi' CPU maji dobrou VM jednotku, ktera dovoluje pouzit primo featury mmap. I proto je DL malloc dost omezena, protoze se porad jeste da prelozit bez mmap.

    R.

  • 3. 4. 2003 17:14

    hkmaly (neregistrovaný)

    Vzhledem k tomu ze kernel stejne neumi sebrat mene nez 4KB bych si tipnul ze sbrk si hlida a vraci az cely 4KB nebo dokonce jeste vetsi kusy.

    /dev/zero je UNIX standard - zarizeni ze ktereho lze cist same nuly, MMAP_ANONYMOUS je odjinud, kazdopadne prakticky efekt je stejny.