UclibcÊÇǶÈëʽlinuxϵͳÀïÃæÊ¹ÓÃ×î¶àµÄc lib¿â¡£×î½üÔÚѧϰlinuxÄÚºËÄÚ´æ¹ÜÀí·½ÃæµÄ¶«Î÷£¬Ñ§ÍêÖ®ºóÒ»Ö±¶ÔÓû§¿Õ¼äµÄÄÚ´æ¹ÜÀíºÜÃÔºý£¬ÌØÕÒÁËlibcÖеÄmalloc²¿·Ý´úÂëÑо¿ÁËһϣ¬Ð¡ÓÐÐĵá£ÌØ×ܽá³É´ËÎÄ¡£
±¾Îĵµ½á¹¹£º
Ò»£º×¼±¸ÖªÊ¶
¶þ£º¶Ñ¿Õ¼äµÄ¹ÜÀí½á¹¹
Èý£º¶Ñ¿Õ¼äµÄ³õʼ»¯
ËÄ£ºFA½á¹¹µÄ²Ù×÷
Î壺mallocµÄʵÏÖ
Áù£ºfreeµÄʵÏÖ
Æß£º×ܽá
Ò»£º ×¼±¸ÖªÊ¶£º
Óû§¿Õ¼äÖУ¬¾³£»áµ÷ÓÃmalloc Óë free½øÐÐÄÚ´æ¹ÜÀí£¬ËüÊÇÔÚ½ø³ÌµÄ¶Ñ¿Õ¼äÖзÖÅäÄÚ´æ¡£ÈçÏÂͼËùʾ£º
¶þ£º¶Ñ¿Õ¼äµÄ¹ÜÀí½á¹¹£º
¶Ñ¿Õ¼ä±íʾµÄÊý¾Ý½á¹¹
struct heap
{
//¶Ñ¿Õ¼ä¿ÕÏÐÇøµÄ±íʾ½á¹¹
struct heap_free_area *free_areas;
//ÓÃÓÚÔÚ¶àÏ̻߳·¾³ÖмÓËø±£»¤
#ifdef HEAP_USE_LOCKING
pthread_mutex_t lock;
#endif
};
heap_free_area½á¹¹ÔÚ´úÂë±»´úÂë×÷Õß³ÆÖ®ÎªFA½á¹¹¡£ËüµÄ¶¨ÒåÈçÏ£º
struct heap_free_area
{
//¿ÕÏÐÇøµÄ´óС
size_t size;
//ÓÃÓÚ¹¹ÔìÑ»·Á´±í
struct heap_free_area *next, *prev;
};
×¢Ò⣺ÔÚFA½á¹¹ÀﲢûÓж¨ÒåÖ¸Ïò¿ÕÏÐÇøµÄÖ¸Õ룬ÕâÊÇÒòΪFA½á¹¹ÕýºÃ·ÅÔÚ¿ÕÏÐÇøµÄºóÃæ¡£¶ÑÕ»Çø¿Õ¼ä½á¹¹ÈçÏÂËùʾ£º


