青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

C++構造函數與析構函數


//a.h代碼:
#pragma once
#include 
<iostream>
using namespace std;
void test();

#include "a.h"
//a.cpp代碼:
class MyTest
{
public:
    MyTest(){
        cout 
<< "MyTest()" << endl;
    }
    
~MyTest(){
        cout 
<< "~MyTest()" << endl;
    }
};
void test()
{
    MyTest test;
}

//main.cpp
#include <iostream>
#include 
"a.h"
int main() 
{
    test();
    
int a=5;
    
int b=6;
    
return 0;
}

int main()
{
004114C0  push        ebp  
004114C1  mov         ebp,esp
004114C3  sub         esp,0D8h
004114C9  push        ebx  
004114CA  push        esi  
004114CB  push        edi  
004114CC  lea         edi,[ebp-0D8h]
004114D2  mov         ecx,36h
004114D7  mov         eax,0CCCCCCCCh
004114DC  rep stos    dword ptr es:[edi]
    callmyfunc();
004114DE  call        callmyfunc (41125Dh)
    int a=5;
004114E3  mov         dword ptr [a],5
    int b=6;
004114EA  mov         dword ptr [b],6
    return 0;
004114F1  xor         eax,eax
}

0041125D  jmp         callmyfunc (411520h)

void callmyfunc()
{
00411520  push        ebp  
00411521  mov         ebp,esp
00411523  sub         esp,0CCh
00411529  push        ebx  
0041152A  push        esi  
0041152B  push        edi  
0041152C  lea         edi,[ebp-0CCh]
00411532  mov         ecx,33h
00411537  mov         eax,0CCCCCCCCh
0041153C  rep stos    dword ptr es:[edi]
    MyTest mytestclass;
0041153E  lea         ecx,[mytestclass]
00411541  call        MyTest::MyTest (4111C7h)
}
00411546  lea         ecx,[mytestclass]
00411549  call        MyTest::~MyTest (41102Dh)
0041154E  push        edx  
0041154F  mov         ecx,ebp
00411551  push        eax  
00411552  lea         edx,[ (411574h)]
00411558  call        @ILT+170(@_RTC_CheckStackVars@8) (4110AFh)
0041155D  pop         eax  
0041155E  pop         edx  
0041155F  pop         edi  
00411560  pop         esi  
00411561  pop         ebx  
00411562  add         esp,0CCh
00411568  cmp         ebp,esp
0041156A  call        @ILT+415(__RTC_CheckEsp) (4111A4h)
0041156F  mov         esp,ebp
00411571  pop         ebp  
00411572  ret




call 指令
CPU執行call指令,進行兩步操作:
1)將當前的 IP 或 CS和IP 壓入棧中;
2)轉移。

call 指令在實現轉移之前, 要將返回地址存入堆棧的, 以便子程可以通過 ret 指令返回到 CALL 指令下面的指令接著運行;
jmp 就沒用這些事兒, 直接過去就過去了, 以后的執行流程全由那里的說了算. 當然了, 一些特殊的執行流程控制技巧除外.




大概的意思,匯編我也不怎么懂.
004114DE  call        callmyfunc (41125Dh)
0041125D  jmp         callmyfunc (411520h)
然后直接jmp 到callmyfunc函數的地址.
callmyfunc函數結束的后面,加入了調用析構的代碼如下:
00411546  lea         ecx,[mytestclass]
00411549  call        MyTest::~MyTest (41102Dh)

現在大概知道C++析構的原理了,編譯器對調用函數做了個子過程包裝,
然后加入析構調用代碼.最后返回.

這樣看來,如果函數中產生異常,可能會導致析構函數不能正確的調用,從而導致內存泄漏.

根據分析,繼續測試.







C++標準規定,本地對象的析構函數的調用順序與他們的構造順序相反。
C++標準規定,本地對象的析構函數的調用順序與他們的構造順序相反。
C++標準規定,本地對象的析構函數的調用順序與他們的構造順序相反。
C++標準規定,本地對象的析構函數的調用順序與他們的構造順序相反。
//C++標準規定,本地對象的析構函數的調用順序與他們的構造順序相反。

void callMyTest()
{
    MyTestA MyTestAObj;
    MyTestB MyTestBObj;
}

int main() 
{
004121B0  push        ebp  
004121B1  mov         ebp,esp 
004121B3  sub         esp,0D8h 
004121B9  push        ebx  
004121BA  push        esi  
004121BB  push        edi  
004121BC  lea         edi,[ebp
-0D8h] 
004121C2  mov         ecx,36h 
004121C7  mov         eax,0CCCCCCCCh 
004121CC  rep stos    dword ptr es:[edi] 
    callMyTest();
004121CE  call        callMyTest (411159h) 
    
int a=5;
004121D3  mov         dword ptr [a],
5 
    
int b=6;
004121DA  mov         dword ptr [b],
6 
    
return 0;
004121E1  xor         eax,eax 
}

00411159  jmp         callMyTest (411540h) 



void callMyTest()
{
00411540  push        ebp  
00411541  mov         ebp,esp 
00411543  push        0FFFFFFFFh 
00411545  push        offset __ehhandler$?callMyTest@@YAXXZ (4155E8h) 
0041154A  mov         eax,dword ptr fs:[00000000h] 
00411550  push        eax  
00411551  sub         esp,0D8h 
00411557  push        ebx  
00411558  push        esi  
00411559  push        edi  
0041155A  lea         edi,[ebp
-0E4h] 
00411560  mov         ecx,36h 
00411565  mov         eax,0CCCCCCCCh 
0041156A  rep stos    dword ptr es:[edi] 
0041156C  mov         eax,dword ptr [___security_cookie (41B044h)] 
00411571  xor         eax,ebp 
00411573  push        eax  
00411574  lea         eax,[ebp-0Ch] 
00411577  mov         dword ptr fs:[00000000h],eax 
    MyTestA MyTestAObj;
0041157D  lea         ecx,[ebp
-11h] 
00411580  call        MyTestA::MyTestA (4110FAh) 
00411585  mov         dword ptr [ebp-4],0 
    MyTestB MyTestBObj;
0041158C  lea         ecx,[ebp
-1Dh] 
0041158F  call        MyTestB::MyTestB (41103Ch) 
}
00411594  lea         ecx,[ebp-1Dh] 
00411597  call        MyTestB::~MyTestB (41114Fh) 
0041159C  mov         dword ptr [ebp
-4],0FFFFFFFFh 
004115A3  lea         ecx,[ebp
-11h] 
004115A6  call        MyTestA::
~MyTestA (411226h) 
004115AB  push        edx  
004115AC  mov         ecx,ebp 
004115AE  push        eax  
004115AF  lea         edx,[ (4115DCh)] 
004115B5  call        @ILT
+185(@_RTC_CheckStackVars@8) (4110BEh) 
004115BA  pop         eax  
004115BB  pop         edx  
004115BC  mov         ecx,dword ptr [ebp
-0Ch] 
004115BF  mov         dword ptr fs:[
0],ecx 
004115C6  pop         ecx  
004115C7  pop         edi  
004115C8  pop         esi  
004115C9  pop         ebx  
004115CA  add         esp,0E4h 
004115D0  cmp         ebp,esp 
004115D2  call        @ILT
+465(__RTC_CheckEsp) (4111D6h) 
004115D7  mov         esp,ebp 
004115D9  pop         ebp  
004115DA  ret  






posted on 2011-10-22 10:29 天下 閱讀(1690) 評論(0)  編輯 收藏 引用 所屬分類: C/C++Win32

<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜桃伊人久久| 在线综合亚洲| 欧美日韩高清在线播放| 欧美成人综合网站| 欧美精品日韩| 欧美日韩一卡二卡| 国产精品久久久久77777| 国产精品国内视频| 国产日产欧美一区| 亚洲成人资源网| 亚洲精品免费一二三区| 在线亚洲国产精品网站| 午夜精品视频在线观看| 久久久久久久久伊人| 欧美韩国在线| 一区二区三区国产在线| 亚洲综合首页| 乱人伦精品视频在线观看| 欧美韩日一区| 欧美成人性网| 国产精品一区一区| 亚洲国产一区二区精品专区| 亚洲伦理在线免费看| 亚洲欧美国产高清va在线播| 久久久国际精品| 亚洲欧洲综合另类| 亚洲午夜电影网| 免费不卡在线观看av| 国产精品久久久久99| 在线欧美小视频| 午夜精品福利一区二区蜜股av| 久久亚洲风情| 亚洲小视频在线观看| 美女视频黄a大片欧美| 国产精品亚洲视频| 9久re热视频在线精品| 久久亚洲视频| 亚洲伊人伊色伊影伊综合网| 欧美国产日韩一区二区三区| 国产一区二区三区在线观看免费视频 | 亚洲全部视频| 欧美一级大片在线免费观看| 欧美精品成人一区二区在线观看| 国产欧美日韩一区| 亚洲影音一区| 亚洲日本免费电影| 老司机精品视频网站| 国产一区二区精品久久91| 亚洲欧美日韩国产另类专区| 亚洲欧洲美洲综合色网| 久久一区二区精品| 伊人精品成人久久综合软件| 欧美一级精品大片| 亚洲一级特黄| 国产精品v日韩精品v欧美精品网站| 亚洲激情网站| 欧美激情国产日韩| 美女脱光内衣内裤视频久久网站| 在线成人av.com| 免费人成网站在线观看欧美高清| 欧美一级二级三级蜜桃| 国产视频欧美视频| 久久精品国产久精国产思思| 午夜精品成人在线视频| 国产老肥熟一区二区三区| 亚洲影视在线| 亚洲宅男天堂在线观看无病毒| 国产精品高精视频免费| 亚洲女优在线| 香蕉久久夜色| 一区二区三区在线观看视频 | 一区二区三区国产在线观看| 亚洲国产欧美精品| 欧美日本精品| 亚洲免费中文字幕| 欧美亚洲综合另类| 在线观看的日韩av| 亚洲国产精品成人综合色在线婷婷| 欧美成人第一页| 亚洲一区二区三区高清不卡| 亚洲综合999| 在线免费观看日本一区| 亚洲精品久久久蜜桃| 国产精品乱码久久久久久| 久久久久久电影| 欧美国产精品中文字幕| 亚洲午夜黄色| 性色av一区二区三区| 亚洲高清视频中文字幕| 亚洲人成网站在线观看播放| 国产精品美女久久久久aⅴ国产馆| 欧美在线999| 美女精品国产| 亚洲欧美国产毛片在线| 久久久亚洲影院你懂的| 一区二区三区产品免费精品久久75| 亚洲一区二区三区国产| 亚洲高清资源| 亚洲免费在线观看视频| 亚洲国产影院| 性视频1819p久久| 日韩一二三区视频| 欧美诱惑福利视频| 一区二区三区视频观看| 久久精品道一区二区三区| 一区二区三区四区国产精品| 欧美在线影院在线视频| 亚洲一区一卡| 欧美国产日韩一区| 久久久久青草大香线综合精品| 欧美日韩91| 欧美高清在线一区| 国产综合色在线| 亚洲精品视频一区| 在线精品视频在线观看高清| 亚洲一区在线视频| 中日韩美女免费视频网站在线观看| 久久国产精品一区二区三区| 亚洲欧美久久久| 欧美日韩国产一区精品一区| 欧美成人激情视频免费观看| 国产亚洲一区二区三区| 一区二区三区精品在线 | 久久久欧美精品sm网站| 欧美三级在线视频| 亚洲免费观看视频| 日韩视频第一页| 欧美freesex8一10精品| 榴莲视频成人在线观看| 国产一区二区三区日韩| 午夜精品亚洲| 久久精品视频在线观看| 国产精品美女主播在线观看纯欲| 亚洲人成在线播放| 欧美国产日韩在线观看| 欧美成人亚洲成人| 亚洲国产精品高清久久久| 久久久一区二区三区| 牛牛影视久久网| 樱花yy私人影院亚洲| 美女视频黄 久久| 亚洲国产精品尤物yw在线观看| 亚洲国产一区二区精品专区| 免费久久99精品国产| 免费一区视频| 亚洲精品偷拍| 欧美喷潮久久久xxxxx| 夜夜爽av福利精品导航| 午夜精品久久久久久久| 国产精品区一区| 欧美在线视频免费| 免费成人黄色片| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区综合| 久久久久久久久伊人| 在线日韩日本国产亚洲| 欧美成年人网站| 99视频精品免费观看| 先锋影音国产精品| 1024成人| 国产精品扒开腿爽爽爽视频| 亚洲欧美日韩一区在线观看| 久热国产精品视频| 亚洲精品美女在线| 国产精品视频一区二区三区| 欧美在线日韩| 亚洲国产日韩在线| 亚洲欧美伊人| 亚洲国产精品国自产拍av秋霞| 欧美日韩99| 欧美一区影院| 99国产精品| 看欧美日韩国产| 一区二区高清在线观看| 国产一区二区三区在线观看精品| 老司机一区二区三区| 亚洲最新在线| 欧美成人a∨高清免费观看| 一区二区三区免费看| 国内精品久久久久久久97牛牛| 欧美激情网站在线观看| 欧美在线观看一区| 99精品视频免费观看| 久久综合久久综合久久| 亚洲午夜影视影院在线观看| 一区二区三区自拍| 国产精品久久久久77777| 免费日本视频一区| 欧美一区二区三区视频在线 | 欧美极品一区二区三区| 篠田优中文在线播放第一区| 亚洲人成网站999久久久综合| 久久久久久久精| 先锋影音久久久| 欧美午夜视频在线| 欧美精品在线看| 欧美va亚洲va日韩∨a综合色| 久久riav二区三区| 亚洲在线观看免费| 夜夜狂射影院欧美极品|