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

Ò»¸öC³ÌÐòµÄÄÚ´æ²¼¾Ö(memory layout)

Ò»¸öC³ÌÐòµÄÄÚ´æ²¼¾Ö(memory layout)
2009-09-09 15:19
Ò»¸öC³ÌÐòÒ»Ö±ÒÔÀ´¶¼ÊÇÓÉÒÔÏÂ5¸ö¶Î(pieces)×é³É£º
´úÂë¶Î(text segment)£º´æ·ÅCPUÖ´ÐеĻúÆ÷Ö¸Áî(machine instructions)¡£Í¨³£Çé¿öÏ£¬´úÂë¶ÎÊǿɹ²ÏíµÄ£¬Ê¹Æä¿É¹²ÏíµÄÄ¿µÄÊǶÔÓÚÆµ·±±»Ö´ÐеijÌÐò£¬Ö»ÐèÒªÔÚÄÚ´æÖÐÓÐÒ»·Ý¿½±´¼´¿É£¬±ÈÈçÎı¾±à¼­Æ÷(text editors)£¬C±àÒëÆ÷£¬shellµÈµÈ¡£ÁíÍ⣬´úÂë¶ÎҲͨ³£ÊÇÖ»¶ÁµÄ£¬Ê¹ÆäÖ»¶ÁµÄÔ­ÒòÊÇ·ÀÖ¹Ò»¸ö³ÌÐòÒâÍâµØÐÞ¸ÄÁËËüµÄÖ¸Áî(prevent a program from accidentally modifying its instructions)¡£
³õʼ»¯Êý¾Ý¶Î/Êý¾Ý¶Î(initialized data segment/data segment):¸Ã¶Î°üº¬ÁËÔÚ³ÌÐòÖÐÃ÷È·±»³õʼ»¯µÄ±äÁ¿¡£ÀýÈ磬һ¸ö²»ÔÚÈκκ¯ÊýÄÚµÄCÉùÃ÷(C declaration)
int   maxcount = 99;
ʹµÃ±äÁ¿maxcount¸ù¾ÝÆä³õʼֵ±»´æ´¢µ½³õʼ»¯Êý¾Ý¶Î¡£
δ³õʼ»¯Êý¾Ý¶Î/bss¶Î(uninitialized data segment/"bss" segment):bssÕâ¸ö½Ð·¨ÊǸù¾ÝÒ»¸öÔçÆÚµÄ»ã±àÔËËã·û¶øÀ´£¬Õâ¸ö»ã±àÔËËã·û±êÖ¾×ÅÒ»¸ö¿éµÄ¿ªÊ¼(stood for "block started by symbol")¡£ÔÚ³ÌÐò¿ªÊ¼Ö´ÐÐ֮ǰ£¬bss¶ÎµÄÊý¾Ý±»kernel³õʼ»¯Îª0»òÕß¿ÕÖ¸Õë(null pointers)¡£Ò»¸ö²»ÔÚÈκκ¯ÊýÄÚµÄCÉùÃ÷
long sum[1000];
ʹµÃ±äÁ¿sum±»´æ´¢µ½Î´³õʼ»¯Êý¾Ý¶Î/bss¶ÎÖС£
Õ»¶Î(stack)£ºwhere automatic variables are stored, along with information that is saved each time a function is called. ÿ´Îµ±Ò»¸öº¯Êý±»µ÷Ó㬸ú¯ÊýµÄ·µ»ØµØÖ·ºÍһЩ¹ØÓÚcallerµÄÐÅÏ¢£¬±ÈÈçijЩ¼Ä´æÆ÷µÄÄÚÈÝ£¬½«±»Ê×ÏÈ´æ´¢µ½Õ»¶Î¡£È»ºóÕâ¸ö±»µ÷Óõĺ¯Êý(caller)ÔÙΪËüµÄ×Ô¶¯±äÁ¿ºÍÁÙʱ±äÁ¿(automatic and temporary variables)ÔÚÕ»¶ÎÉÏ·ÖÅä¿Õ¼ä¡£Õâ¾ÍÊÇCÈçºÎʵÏÖº¯ÊýµÄµÝ¹éµ÷Óá£Ã¿´ÎÒ»¸öµÝ¹éº¯Êýµ÷ÓÃÆä±¾Éí£¬Ò»¸öеÄÕ»¿ò¼Ü(stack frame)¾Í»á±»Ê¹Óã¬ÕâÑùÕâ¸öÐÂʵÀýÕ»ÀïµÄÒ»×é±äÁ¿¾Í²»»áºÍ¸Ãº¯ÊýµÄÁíÒ»¸öʵÀýÕ»ÀïÃæµÄ±äÁ¿»¥Ïà¸ÉÈÅ¡£
¶Ñ¶Î(heap)£ºÓÃÓÚ¶¯Ì¬ÄÚ´æ·ÖÅä(dynamic memory allocation)¡£Ò»Ö±ÒÔÀ´£¬¶ÑÔÚÄÚ´æÖеÄλÖÃÊǽéÓÚbss¶ÎºÍÕ»¶ÎÖ®¼ä¡£
ͼ7.6ÏÔʾÁËÕâ5¸ö¶ÎÔÚÄÚ´æÖеĵäÐÍÅÅÁС£ÕâÊÇÒ»ÕÅÂß¼­Í¼£¬±íʾÁËÒ»¸ö³ÌÐòÔÚÄÚ´æÖп´ÆðÀ´ÊÇÔõôÑùµÄ¡£¶ÔÓÚÒ»¸ö¸ø¶¨µÄʵÏÖ£¬Ã»ÓÐÇ¿ÖÆµÄÒªÇó˵±ØÐë°´ÕÕÕâÖÖ·½Ê½À´ÅÅÁÐÕâ5¸ö¶Î¡£È»¶ø£¬Õâ¸øÁËÎÒÃÇÒ»ÖÖµäÐ͵ıãÓÚÃèÊöµÄÅÅÁз½Ê½¡£ÔËÐÐÔÚIntel x86´¦ÀíÆ÷ÉϵÄlinux£¬´úÂë¶Î(text segment)´ÓµØÖ·0x08048000¿ªÊ¼(ÍùÉÏ)£¬Õ»µ×´ÓµØÖ·0xC0000000ÍùÏ£¨ÔÚÕâ¸öÌØ¶¨µÄ±íʾ½á¹¹ÖУ¬Õ»¶Î´Ó¸ßµØÖ·Ïòµ


Ïà¹ØÎĵµ£º

ÓÃC#£¨C++£©Socketºǫ́±àд×Ô¼ºµÄIIS·þÎñÆ÷´úÌæIIS

 ±¾ÎÄ´¥¼°µ½Socket TCP/IP±à³Ì·½ÃæµÄ֪ʶ£¬ÆäʵÕâÊǺܼòµ¥µÄÄÚÈÝ£¬´ó¼Ò¿´²»Ã÷µÄµØ·½´ó¿ÉÒÔÏÈÍù϶Á£¬ÒÔºóÔÙ¿´Ò»±é£¬¿ÉÄÜ»á¾õµÃºÜ¼òµ¥¡£
ºÜ¶àÈËÐ´ÍøÕ¾ÓùßÁËIISºÍTomcatÕâЩ¸ß¼¶µÄºǫ́À´×öÍøÕ¾ºǫ́·þÎñ£¬È»¶ø£¬ÔÚÕâЩºǫ́»¹Ã»ÓÐÎÊÊÀ֮ǰ£¬ÈËÃÇÊÇÔõô±àÐ´ÍøÕ¾µÄÄØ£¿ËûÃǵײ㹲ͬ×ñÊØµÄ×¼ÔòºÍ±ê×¼ÓÖÊÇÊ²Ã´ÄØ£¿
Õâ¾ÍÊÇht ......

[Õª×Ôc#Bible]c#ÖÐnamespaceµÄʹÓã¨ÃüÃû¿Õ¼ä£©

The C# classes that you design will be used by code that you write and possibly by code that
other people write. Your C# classes may be used by a VB.NET application or from within an
ASP.NET page. Moreover, your classes may very well be used alongside other classes
designed by other .NET develope ......

C´úÂëÓïÑÔתVB´úÂëµÄÎÊÌ⣺

Ë­ÄܰïÎÒ°ÑÕâ¶Î´úÂëת³ÉVbµÄ´úÂ룬²»Ê¤¸Ð¼¤£¬Ð»Ð»£¡
void CTempDlg::OnOK()
{
  UpdateData(1);
  int nlen=m_edit1.GetLength();
  char *username=m_edit1.GetBuffer(nlen);//¶¨ÒåÒ»¸öÐÂ×Ö·û´®username,³¤¶ÈΪnlen£¬²¢½«m_edit1ÖеÄ×Ö·û´®Ò»¸ö¸ö·ÅÈëµ½usernameÊý×éÖÐ
  char strA[]="90123456 ......

ubuntuϽâ¾ö C compiler cannot create executables

       ½ñÌ죬ÔÚUbuntuÉϰ²×°PythonÓöµ½ÁËÎÊÌ⣺ C compiler cannot create executables¡£ÕâÓ¦¸ÃÊDZàÒë»·¾³³öÏÖÁËÎÊÌâ¡£ÔÚÍøÉÏËÑË÷ÁËһϣ¬½â¾ö·½·¨ÈçÏ£º
       sudo apt-get install build-essential¼´¿É¡£
......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ