读书人

char a[十] = quot;12345quot;这个12345会在常

发布时间: 2013-03-20 15:25:24 作者: rapoo

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

读书人网 >C语言

热点推荐