Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

GNU C library ±Ê¼Ç£¨2£©

ÄÚÈÝ£ºMemory
1. ¼¸¸ö»ù±¾¸ÅÄpage¡¢frame¡¢paging¡¢segment¡£
½ø³Ì·ÖÅäÄÚ´æµÄÁ½ÖÖģʽ£¬Ò»¸öʹÓà exec ϵÁк¯Êý£¬Ò»¸öʹÓà programmatically£¨malloc µÈº¯Êý£©¡£
ÖØÒªµÄ segment ÓÐ text segment£¨´æ·Å´úÂëµÈµÈ£¬Ò»°ãÔÚ½ø³ÌµÄÉúÃüÖÜÆÚÖв»±ä£©¡¢data segment
£¨´æ·ÅÊý¾Ý£¬ÄÜÓÃһЩº¯ÊýÀ´µ÷Õû´óС£¬²»¹ýµÍλ¶ËλÖò»±ä£©¡¢stack segment£¨Ëæ×ÅʹÓõĶÑÕ»
±ä´ó¶ø±ä´ó£¬µ«²»±äС...£©
2. ÄÚ´æµÄ¾²Ì¬·ÖÅäºÍ×Ô¶¯·ÖÅ䡣ǰÕßÊǶÔÓÚ static ±äÁ¿»òÈ«¾Ö±äÁ¿£¬Ò»µ©¿ªÊ¼¾Í·ÖÅ䣬¼´Ò»Ö±´æÔÚµ½×îºó¡£
ºóÕßÊÇÁÙʱ±äÁ¿£¬Èçµ÷Óú¯Êý¡£ÖµµÃ×¢ÒâµÄÊÇ£º
In GNU C, the size of the automatic storage can be an expression that
varies. In other C implementations, it must be a constant.
3. ÄÚ´æµÄ¶¯Ì¬·ÖÅ䲻Ϊ C ÓïÑÔ±¾ÉíÖ§³Ö£¬²»Ïñ C++¡£»ù±¾·½·¨ÊÇ
void * malloc (size_t size)
·ÖÅäµ½µÄÄÚ´æÃ»Óгõʼ»¯£¨calloc »á×öÇåÁ㣬clear allocate£©£¬Òò´ËÄÜÓà memset À´
½øÐгõʼ»¯¡£·ÖÅäºóÓ¦¼ì²â·µ»ØÖ¸ÕëÊÇ·ñΪ NULL¡£malloc ·µ»ØµÄÒ»¸ö¿é¶àÊýÇé¿öÏÂ¶ÔÆë
£¨ÕâÑùÄÜ´æ´¢ÈÎÒâÀàÐ͵ÄÊý¾Ý£©¹ýÁË£¬µØÖ·Îª 8 µÄ±¶Êý£¨64 λϵͳÀïÃæÊÇ 16 µÄ±¶Êý£©£¬
ÔÚÒ»Ð©ÌØ±ðÇé¿öÏ£¨page µÄ±ß½ç£©ÄÜÀûÓà memalign¡¢posix_memalign¡¢vlign À´·µ»Ø
¶ÔÆë£¨2 µÄÃݴΣ©µÄÄÚ´æ¿é¡£free µÄÄÚ´æ·Ç³£ÉÙ±»·µ»¹¸ø²Ù×÷ϵͳ£¬¶àÊýÇé¿ö±»Áô×÷ºóÃæ
malloc ʹÓá£Èç¹ûÐèÒªµ÷ÕûÒÑ malloc µÄ¿éµÄ´óС£¬Ê¹Óà realloc¡£glibc ²»»á½«·ÖÅäµÄ¿é
¶Ô 2 µÄÃݴνøÐÐÏòÉÏÈ¡Õû¡£
4. Ò»´ÎÐÔ·ÖÅä·Ç³£´óµÄÄڴ棨´óÓÚÒ»¸ö page£©»áʹÓÃÏò 2 µÄÃÝ´ÎÈ¡ÕûµÄ²ßÂÔ£¬Ê¹Óà mmap
Ïà¹ØµÄº¯Êý mallopt£¬ÕâÖÖ·ÖÅäµÃµ½µÄÄÚ´æÔÚ free ʱ»á·µ»Ø¸ø²Ù×÷ϵͳ¡£
5. Ôõôµ÷Õû malloc µÄÐÐΪ£¿Ê¹Óà mallopt µ÷ÕûһЩ²ÎÊýµÄÖµ£¨malloc.h£©£¬Èç
M_TRIM_THRESHOLD£¨·µ»Ø¸ø OS µÄÄÚ´æµÄÒ»¸öãÐÖµ£©¡¢M_MMAP_THRESHOLD
£¨´óÓÚ´ËÖµµÄÄÚ´æ·ÖÅäÇëÇóʹÓà mmap ϵͳµ÷Ó㩵ȵȡ£
6. ·ÖÅäµÄÄÚ´æÀ´×Ô¶Ñ£¨heap£©£¬ÄÜÓÃ
int mcheck (void (*abortfn) (enum mcheck_status status))
À´¼ì²é·ÖÅäÄÚ´æµÄÒ»ÖÂÐÔ£¬µ÷ÓÃÔÚ malloc ֮ǰ¡£
enum mcheck_status mprobe (void *pointer)
ÎªÌØ¶¨µÄÒ»¿éÄÚ´æ×ö¼ì²é¡£Õâ¶¼ÊÇ GNU extension¡££¨mcheck.h£©
7. ΪÁË·½±ãµ÷ÊÔ£¬glibc ΪÓû§ÌṩÁË malloc µÈµÈº¯ÊýµÄ¹³×Ó£¨hook£©£¬Èç __malloc_hook
¶ÔÓ¦µÄÊǸöº¯ÊýÖ¸Õ룬
void *function (size_t size, const void *caller)
ÆäÖÐ caller Êǵ÷Óà ma


Ïà¹ØÎĵµ£º

C/C++Êý×éÃûÓëÖ¸ÕëÇø±ð

 ÒÔÏÂÎÄÕÂ×ªÔØÓÚ:ΪÁËѧϰºÍÊÕ²Ø
http://tech.163.com/school · 2005-08-23 11:05:18 · À´Ô´: Ìì¼«Íø
C/C++Êý×éÃûÓëÖ¸ÕëÇø±ð
¡¡¡¡ÒýÑÔ
¡¡¡¡Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇ ......

C퉀
 ±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº­¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½ÁËÔõÑùµÄ³Ì¶È£¬Î ......

¹ØÓÚcÖÐvolatile¹Ø¼ü×Ö£¨×ªÌù£©

 Ò»¸ö¶¨ÒåΪvolatileµÄ±äÁ¿ÊÇ˵Õâ±äÁ¿¿ÉÄܻᱻÒâÏë²»µ½µØ¸Ä±ä£¬ÕâÑù£¬±àÒëÆ÷¾Í²»»áÈ¥¼ÙÉèÕâ¸ö±äÁ¿µÄÖµÁË¡£¾«È·µØËµ¾ÍÊÇ£¬ÓÅ»¯Æ÷ÔÚÓõ½Õâ¸ö±äÁ¿Ê±±ØÐëÿ´Î¶¼Ð¡ÐĵØÖØÐ¶ÁÈ¡Õâ¸ö±äÁ¿µÄÖµ£¬¶ø²»ÊÇʹÓñ£´æÔڼĴæÆ÷ÀïµÄ±¸·Ý¡£ÏÂÃæÊÇvolatile±äÁ¿µÄ¼¸¸öÀý×Ó£º
    1). ²¢ÐÐÉ豸µÄÓ²¼þ¼Ä´æÆ÷£¨È磺״̬¼Ä´æÆ ......

GNU C library ±Ê¼Ç1

ÄÚÈÝ£ºIntroduction ºÍ Error Reporting
1. glibc ËùʵÏÖÈ«²¿»ò²¿·Ö¹æ·¶ÏµĹ¦ÄÜÓÐ
ISO C: The international standard for the C programming language.
POSIX: The ISO/IEC 9945 (aka IEEE 1003) standards for operating systems.
Berkeley Unix: BSD and SunOS.
SVID: The System V Interface Description.
X ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ