浅析"烫烫烫烫"是怎么来的
在用VC写代码时c;经常会遇到在栈中申请空间的并且没有被初始化的字符数组就会显示"烫烫烫烫。。。"c;虽然是知道class="tags" href="/tags/BianYiQi.html" title=编译器>编译器对栈中没有初始化的数据会进行默认的初始class="tags" href="/tags/HuaGong.html" title=化工>化工作c;但是一直不得要领c;在拜读《程序员的自我修养》的时候有所收获c;还挺有意思的c;写出来和大家分享。
代码很简单c;就是在栈中申请了一个大小为4个字节的字符数组。
x 0x0012ff60 "烫烫烫烫?" char [4]
查看反class="tags" href="/tags/HuiBian.html" title=汇编>汇编:
简单解释一下关键句的含义:
004113AC 8D BD 34 FF FF FF lea edi,[ebp-0CCh]
将获得的0CCh大小的栈空间首地址赋给edi
004113B2 B9 33 00 00 00 mov ecx,33h
rep的循环次数为33h
004113B7 B8 CC CC CC CC mov eax,0CCCCCCCCh
eax = 0CCCCCCCCh
004113BC F3 AB rep stos dword ptr es:[edi]
将栈空间的33H个双字节赋值为0CCCCCCCCh