Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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++ ´ò¿ªPDFÎĵµ

 wchar_t wsWorkingDir[256] = _T("");
 CString strPDF(_T(""));
 ::GetCurrentDirectory(256, wsWorkingDir);
 strPDF.Format(_T("%s"), wsWorkingDir);
 if (strPDF.GetAt(strPDF.GetLength()-1) != '\\')
 {
  strPDF += '\\';
 }
 strPDF += "doc\\my.pdf" ......

ѧϰCµÄÃÔ»ó

   ÎÒÒ»Ö±Ïë×öÒ»¸öÈí¼þ³öÀ´£¬Ö»ÊǼòµ¥µÄ£¬±ÈÈç˵һ¸ö¼Ó¼õ³Ë³ýµÄEXE¡£¿ÉÊÇÎÒÖªµÀÎÒ´íÁË£¬ÎÒ×î½üÑ¡ÐÞÁËÒ»Ãŵç×Ó¹¤³ÌÉè¼ÆÓëÖÆ×÷ºó²ÅÁ˽â±à³ÌµÄÄ¿µÄºÍ¹¤¾ßµÄ¶àÑùÐÔ¡£²»Í¬µÄÈí¼þÌṩ²»Í¬µÄ±àÒë»·¾³£¬ÎÒ·¢ÏÖÄ£ÄâÈí¼þµÄÇ¿µÄ¡£ÎÒʱ³£ÏëÎÒÊDz»ÊÇ¿ÉÒÔͨ¹ýÎÒÏÂÔØ°²×°µÄÈí¼þÀ´Ñ§Ï°Ð©Ô´³ÌÐò¡£ÊǵÄÓÐһЩ£¬¿ÉÊÇÍêÈ«¿´²»¶®£¬³ýÁË ......

CÌâÄ¿3

1. ÓÃÔ¤´¦ÀíÖ¸Áî#define ÉùÃ÷Ò»¸ö³£Êý£¬ÓÃÒÔ±íÃ÷1ÄêÖÐÓжàÉÙÃ루ºöÂÔÈòÄêÎÊÌ⣩
#define SECONDS_PER_YEAR   (60 * 60 * 24 * 365)UL
ÎÒÔÚÕâÏë¿´µ½¼¸¼þÊÂÇ飺
     1). #define Óï·¨µÄ»ù±¾ÖªÊ¶£¨ÀýÈ磺²»ÄÜÒԷֺŽáÊø£¬À¨ºÅµÄʹÓ㬵ȵȣ©
     2). ¶®µÃÔ¤´¦ÀíÆ÷½«Î ......

pku 2115 C Looooops ͬÓඨÀí

 #include <stdio.h>
long long mod(long long a,long long b)
{
return (a % b + b) % b;
}

struct triple
{
long long d,x,y;
};

long long Euclid(long long a,long long b)
{
if(b == 0)
return a;
else
retu ......

c vaϵÁкêµÄ»ù±¾Ó÷¨

 vaϵÁкêµÄÓ÷¨µÄÒ»°ã²½Ö裺
 vsptr(char *format, ...)  //ÇмǴ˴¦µÄ¸ñʽ
 {
    va_list argptr;
    va_start(argptr, format); //ʹµÃargptrÖ¸ÏòÒÔformat¿ªÍ·µÄ´æ´¢¿Õ¼ä
    va_arg(argptr, type);  //È¡´«µÝµÄ²ÎÊý
    ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ