Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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Öкê#ºÍ##µÄÔËÓÃ

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#define f(a,b) a##b
#define g(a)  #a
#define h(a) g(a)
int main()   
{   
    char a = 'a';      
    ......

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

C ºê¶¨ÒåµÄ¼òµ¥×ܽá

 
ÎÒÔÚд´úÂëµÄʱºòϲ»¶Ê¹Óú꣬²»½öʹ´úÂë¿´ÆðÀ´Õû½à£¬¶øÇÒÓúÃÁË»¹Äܼ«´óµÄ¼õÇá±àÂëµÄ¹¤×÷Á¿£¬µ«ÊÇÈç¹ûʹÓò»µ±µÄ»°£¬³öÁËÎÊÌâ²éÕÒÆðÀ´¾Í¾Í·Ç³£µÄÄÑÁË£¬ÏÂÃæµÄ×ܽá´ó²¿·ÖÊÇ´ÓÍøÉÏ¿´µ½µÄ£¬Ò²ÓÐһЩÊÇÎÒ×Ô¼ºÔÚ¹¤×÷ÖÐ×ܽá³öÀ´µÄ¡£
ºêʹÓÃÖеij£¼ûµÄ»ù´¡ÎÊÌâ
1. ·ÀÖ¹Ò»¸öÍ·Îļþ±»Öظ´°üº¬
   #ifndef BOD ......

C/C++/VC++ ±äÁ¿ÃüÃû¹æÔò

C/C++/VC++ ±äÁ¿ÃüÃû¹æÔò
ÊÇVC++µÄô£¿
4.±äÁ¿·ç¸ñ
±äÁ¿¾¡Á¿²ÉÓÃÐÙÑÀÀûÃüÃû·¨£¬Í¬Ê±½áºÏVCµÄÔ­Ôò£»Ò»°ãÇé¿öÏ£¬±äÁ¿µÄÈ¡Ãû·½Ê½Îª£º
<scope><prefix><qualifier>
ÓйØÏîÄ¿µÄÈ«¾Ö±äÁ¿±ØÐëÓÃg_¿ªÊ¼£¬Àà³ÉÔ±±äÁ¿ÓÃm_£¬¾Ö²¿±äÁ¿Èôº¯Êý½Ï´óÔò¿É¿¼ÂÇÓÃl_ÓÃÒÔÏÔʾ˵Ã÷ÆäÊǾֲ¿±äÁ¿¡£
ǰ׺
ÀàÐÍ
ʾÀý
g_ ......

C++ÖÐextern ¡°C¡±º¬ÒåÉî²ã̽Ë÷

(ת)C++ÖÐextern “C”º¬ÒåÉî²ã̽Ë÷
 
 
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏó&rdquo ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ