扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
int x=35;
char str[10];
strcpy(str,"www.it315.org"/*共13个字母*/);
//问:此时x和strlen(str)的值分别是多少? |
…… |
78 |
56 |
34 |
12 |
…… |
…… |
12 |
34 |
56 |
78 |
…… |
1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 int x = 35;
7 char str[10];
8 strcpy(str,"www.it315.org"/*共13个字母*/);
9 printf("%d\n",x);
10 return 0;
11 } |
1: #include <stdio.h>
2: #include <string.h>
3:
4: int main()
5: {
00401010 push ebp
00401011 mov ebp,esp
00401013 sub esp,50h
00401016 push ebx
00401017 push esi
00401018 push edi
00401019 lea edi,[ebp-50h]
0040101C mov ecx,14h
00401021 mov eax,0CCCCCCCCh
00401026 rep stos dword ptr [edi]
6: int x = 35;
00401028 mov dword ptr [ebp-4],23h /*将35压进栈中*/ (1处)
7: char str[10];
8: strcpy(str,"www.it315.org"/*共13个字母*/);
0040102F push offset string "www.it315.org" (00420020)
00401034 lea eax,[ebp-10h] (2处) 00401037 push eax
00401038 call strcpy (00401100)
0040103D add esp,8
9: printf("%d\n",x);
00401040 mov ecx,dword ptr [ebp-4] (3处)
00401043 push ecx
00401044 push offset string "%d\n" (0042001c)
00401049 call printf (00401080)
0040104E add esp,8
10: return 0;
00401051 xor eax,eax
11: } |
栈帧布局 高地址
低地址 |
图 4字符串在栈中的布局
.file "sttest.c"
.section .rodata
.align 32
.LC0:
.string "www.it315.org"
.string ""
.LC1:
.string "%d\n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $56, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
movl $35, -12(%ebp) /*将35放到栈中,即x处*/ (1处)
movl $.LC0, 4(%esp) leal -40(%ebp), %eax (2处) movl %eax, (%esp) call strcpy
movl -12 (%ebp), %eax (3处)
movl %eax, 4(%esp)
movl $.LC1, (%esp)
call printf
movl $0, %eax
leave
ret
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-13)" |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者