设为首页 加入收藏

TOP

C++ 中“空引用”与“空指针”的区别 (二)
2014-11-23 21:12:48 来源: 作者: 【 】 浏览:46
Tags:引用 指针 区别
14E7 mov eax,0CCCCCCCCh
004114EC rep stos dword ptr es:[edi]
004114EE mov dword ptr [c],0
004114F5 mov eax,dword ptr [c]
004114F8 mov dword ptr [rc],eax
004114FB cmp dword ptr [c],0
004114FF je wmain+3Fh (41150Fh)
00411501 mov eax,dword ptr [c]
00411504 add eax,4
00411507 mov dword ptr [ebp-0DCh],eax
0041150D jmp wmain+49h (411519h)
0041150F mov dword ptr [ebp-0DCh],0
00411519 mov ecx,dword ptr [ebp-0DCh]
0041151F push ecx
00411520 call fb (411118h)
00411525 add esp,4
00411528 cmp dword ptr [rc],0
0041152C je wmain+6Ch (41153Ch)
0041152E mov eax,dword ptr [rc]
00411531 add eax,4
00411534 mov dword ptr [ebp-0DCh],eax
0041153A jmp wmain+76h (411546h)
0041153C mov dword ptr [ebp-0DCh],0
00411546 mov ecx,dword ptr [ebp-0DCh]
0041154C push ecx
0041154D call fb (41108Ch)
00411552 add esp,4
00411555 xor eax,eax
00411557 pop edi
00411558 pop esi
00411559 pop ebx
0041155A add esp,0DCh
00411560 cmp ebp,esp
00411562 call @ILT+345(__RTC_CheckEsp) (41115Eh)
00411567 mov esp,ebp
00411569 pop ebp
0041156A ret

wmain:
004114D0 push ebp
004114D1 mov ebp,esp
004114D3 sub esp,0DCh
004114D9 push ebx
004114DA push esi
004114DB push edi
004114DC lea edi,[ebp-0DCh]
004114E2 mov ecx,37h
004114E7 mov eax,0CCCCCCCCh
004114EC rep stos dword ptr es:[edi]
004114EE mov dword ptr [c],0
004114F5 mov eax,dword ptr [c]
004114F8 mov dword ptr [rc],eax
004114FB cmp dword ptr [c],0
004114FF je wmain+3Fh (41150Fh)
00411501 mov eax,dword ptr [c]
00411504 add eax,4
00411507 mov dword ptr [ebp-0DCh],eax
0041150D jmp wmain+49h (411519h)
0041150F mov dword ptr [ebp-0DCh],0
00411519 mov ecx,dword ptr [ebp-0DCh]
0041151F push ecx
00411520 call fb (411118h)
00411525 add esp,4
00411528 cmp dword ptr [rc],0
0041152C je wmain+6Ch (41153Ch)
0041152E mov eax,dword ptr [rc]
00411531 add eax,4
00411534 mov dword ptr [ebp-0DCh],eax
0041153A jmp wmain+76h (411546h)
0041153C mov dword ptr [ebp-0DCh],0
00411546 mov ecx,dword ptr [ebp-0DCh]
0041154C push ecx
0041154D call fb (41108Ch)
00411552 add esp,4
00411555 xor eax,eax
00411557 pop edi
00411558 pop esi
00411559 pop ebx
0041155A add esp,0DCh
00411560 cmp ebp,esp
00411562 call @ILT+345(__RTC_CheckEsp) (41115Eh)
00411567 mov esp,ebp
00411569 pop ebp
0041156A ret
汇编代码有兴趣自己研究,不细说了。


回过头想想,两个平台的编译器的两种处理方式,都有他的合理性,windows平台增加了容错性,而linux平台在处理引用时减少判断,增加性能。这隐隐体现出windows与linux开发理念的不同。


最后,请大家记住,引用不能为空,如果可能存在空对象时,请使用指针。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 2421 Constructing Roads 下一篇打印螺旋序列

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)