- 论坛徽章:
- 0
|
没有gcc的环境,用的VS 2010
查看了汇编
int foo(int *p)
{
00F81380 push ebp
00F81381 mov ebp,esp
00F81383 sub esp,0C4h
00F81389 push ebx
00F8138A push esi
00F8138B push edi
00F8138C lea edi,[ebp-0C4h]
00F81392 mov ecx,31h
00F81397 mov eax,0CCCCCCCCh
00F8139C rep stos dword ptr es:[edi]
return (p ? *p : 0);
00F8139E cmp dword ptr [p],0
00F813A2 je foo+31h (0F813B1h)
00F813A4 mov eax,dword ptr [p]
00F813A7 mov ecx,dword ptr [eax]
00F813A9 mov dword ptr [ebp-0C4h],ecx
00F813AF jmp foo+3Bh (0F813BBh)
00F813B1 mov dword ptr [ebp-0C4h],0
00F813BB mov eax,dword ptr [ebp-0C4h]
}
实现 p ? *p : 0
汇编里,确实是比较了P是否是空的
程序运行也正常,返回0!
楼主说的不对哈!
|
|