• <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>

            ACG狂人

            其實(shí)我更愛姐汁...

            異常處理的可惡陷阱

            也許這個錯誤是很幼稚的,但是他著實(shí)難住了我好幾個小時,一度我還以為永遠(yuǎn)解不開這個謎題了(*o*),情況是這樣的,異常在拋出之后,到達(dá)處理異常的catch域,但這時上下文必須依然有效才行,否則catch將接收不到拋出的異常。具體代碼如下:
                try
                
            {
                    moeutil::simple_pool spool(
            32);
                    
            void* p1 = spool.malloc(15);
                    
            void* p2 = spool.malloc(102);
                    
            void* p3 = spool.malloc(154);
                    
            void* p4 = spool.malloc(7);
                    
            void* p5 = spool.malloc(7);
                    
            void* p6 = spool.malloc(70);
                    
            //std::cout<<p1<<'\n'<<p2<<'\n'<<p3<<'\n'<<p4<<'\n'<<p5<<'\n'<<p6<<std::endl;
                    spool.free(p1);
                    spool.free(reinterpret_cast
            <char*>(p2)+2);
                    spool.free(p3);
                    spool.free(p4);
                    spool.free(p5);
                    spool.free(p6);

                }
            catch (moeutil::Exception& e){
                    std::cout
            <<e.what()<<std::endl;
                }
            這是一個簡易的內(nèi)存池類,其中simple_pool的析構(gòu)函數(shù)會拋出異常,然后free函數(shù)也會拋出異常。析構(gòu)函數(shù)可以檢測是否有內(nèi)存泄漏,而free函數(shù)是檢測到無效的傳入指針時會拋出異常。析構(gòu)拋出異常是沒問題的,但是free拋出異常的時候問題就來了,當(dāng)free拋出異常時,由于會脫離try塊,所以spool也會被析構(gòu),這樣就會陷入麻煩,由于沒有全部free,所以析構(gòu)本身也會拋出異常,導(dǎo)致了類似于異常迭代的情況。也就是說,在throw一個異常的過程中又一次觸發(fā)了異常。于是windows系統(tǒng)的debug error對話框出現(xiàn)了,而且是出現(xiàn)在throw那一行。
            此隨筆用于提醒自己勿犯第二次!

            posted on 2009-08-02 17:12 釀妹汁 閱讀(670) 評論(1)  編輯 收藏 引用 所屬分類: C++備忘

            評論

            # re: 異常處理的可惡陷阱[未登錄] 2009-09-07 23:12 K

            規(guī)范上一般不建議在析構(gòu)函數(shù)里拋異常的吧~  回復(fù)  更多評論   

            www.久久热.com| 亚洲国产欧美国产综合久久| 久久久久久精品久久久久| 久久综合亚洲色HEZYO社区 | 亚洲狠狠综合久久| 久久黄色视频| 亚洲国产另类久久久精品小说 | 久久精品国产亚洲精品2020 | 女人香蕉久久**毛片精品| 久久精品国产亚洲精品| 99久久综合狠狠综合久久| 国产精品成人久久久| 久久精品国产久精国产果冻传媒| 久久无码AV中文出轨人妻| 久久精品国产第一区二区三区| 色婷婷综合久久久久中文| 国产精品亚洲综合专区片高清久久久| 亚洲综合婷婷久久| 性做久久久久久免费观看| 91精品国产综合久久婷婷| 久久这里只精品国产99热| 天天爽天天爽天天片a久久网| 久久99精品国产麻豆蜜芽| 久久久久99精品成人片直播| 国内精品久久久久| 亚洲AV日韩精品久久久久| 久久久精品2019免费观看| 亚洲狠狠综合久久| 国产69精品久久久久久人妻精品| 久久综合五月丁香久久激情| 久久人人爽人人爽人人片AV不 | 亚洲AV无码久久精品色欲| 久久成人国产精品二三区| 久久久久无码精品| 99久久精品费精品国产一区二区| 国产伊人久久| 久久超碰97人人做人人爱| 亚洲综合久久夜AV | 伊人久久大香线蕉综合5g| 欧洲人妻丰满av无码久久不卡| 国产AV影片久久久久久|