69,373
社区成员
发帖
与我相关
我的任务
分享
char * lp=new char[40];
char * lpchar=lp;
lpchar++;
short * lpshort=(short *)lp;
lpshort++;
int * lpint=(int *)lp;
lpint++;
这一段C++代码经编译后是这样的:
push eax
push offset s_ITTRCore_code
push 28h
call operator new[](uint,char const *,int)
add esp, 0Ch
mov [ebp+var_104], eax ;char * lp=new char[40];
mov ecx, [ebp+var_104]
mov [ebp+var_14], ecx ;
mov eax, [ebp+var_14]
mov [ebp+var_20], eax ;char * lpchar=lp;
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov eax, [ebp+var_14]
mov [ebp+var_2C], eax ;short * lpshort=(short *)lp;
mov eax, [ebp+var_2C]
add eax, 2
mov [ebp+var_2C], eax
mov eax, [ebp+var_14]
mov [ebp+var_38], eax int * lpint=(int *)lp;
mov eax, [ebp+var_38]
add eax, 4
mov [ebp+var_38], eax
编译器自动换算了。