首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char a[十] = "12345"这个12345会在常量段有备份?扯了吧

2013-03-20 
char a[10] 12345这个12345会在常量段有备份?扯了吧刚看到一问题说char a[10] 1234512345这个在

char a[10] = "12345";这个12345会在常量段有备份?扯了吧
刚看到一问题说char a[10] = "12345";  12345这个在常量段有备份,对于char a[10] = "12345";其实是copy过程,这有点扯吧。。。刚用VS2010调试了下,根本没这一说吧。求高手解答。
[解决办法]
随便写一段


#include <stdio.h>
int main(void)
{
char p[] = "apple";
printf("%s", p);
return 0;
}

汇编。 VS2010 Release版本

     1: #include <stdio.h>
     2: int main(void)
     3: {
009C1000  push        ebp  
009C1001  mov         ebp,esp  
009C1003  sub         esp,0Ch  
009C1006  mov         eax,dword ptr [___security_cookie (9C3000h)]  
009C100B  xor         eax,ebp  
009C100D  mov         dword ptr [ebp-4],eax  
     4: char p[] = "apple";
009C1010  mov         eax,dword ptr [string "apple" (9C20F4h)]  
//0x9c20f4就是apple映射到内存的地址

009C1015  mov         cx,word ptr ds:[9C20F8h]  
     5: printf("%s", p);
009C101C  lea         edx,[ebp-0Ch]  
009C101F  push        edx  
009C1020  push        offset string "%s" (9C20FCh)  
009C1025  mov         dword ptr [ebp-0Ch],eax  
009C1028  mov         word ptr [ebp-8],cx  
009C102C  call        dword ptr [__imp__printf (9C20A0h)]  
     6: return 0;
     7: }
009C1032  mov         ecx,dword ptr [ebp-4]  
009C1035  xor         ecx,ebp  
009C1037  add         esp,8  
009C103A  xor         eax,eax  
009C103C  call        __security_check_cookie (9C1045h)  
009C1041  mov         esp,ebp  
009C1043  pop         ebp  
009C1044  ret  

热点排行