wink's

梦想总比现实闪耀,所以我一路追寻

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  今天闲来无事.就想看看sizeof到底是怎么回事.于是,反汇编之!

  

  • int _tmain(int argc, _TCHAR* argv[])
  • {
  •      int i=sizeof(int);
  •      return 0;
  • }

反汇编后

int _tmain(int argc, _TCHAR* argv[])
{
00411370 push ebp
00411371 mov ebp,esp
00411373 sub esp,0CCh
00411379 push ebx
0041137A push esi
0041137B push edi
0041137C lea edi,[ebp-0CCh]
00411382 mov ecx,33h
00411387 mov eax,0CCCCCCCCh
0041138C rep stos dword ptr es:[edi] //这前面代码是申请0XCC个局部栈空间,并初始化为0xCCCCCCCCh 


//int i=sizeof(int);
0041138E mov dword ptr [i],4   //原来是编译器替换掉了sizeof的值
//return 0;
00411395 xor eax,eax
}

posted on 2011-12-21 12:34  wink's  阅读(222)  评论(0编辑  收藏  举报