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

            其實我更愛姐汁...

            異常處理的可惡陷阱

            也許這個錯誤是很幼稚的,但是他著實難住了我好幾個小時,一度我還以為永遠解不開這個謎題了(*o*),情況是這樣的,異常在拋出之后,到達處理異常的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;
                }
            這是一個簡易的內存池類,其中simple_pool的析構函數會拋出異常,然后free函數也會拋出異常。析構函數可以檢測是否有內存泄漏,而free函數是檢測到無效的傳入指針時會拋出異常。析構拋出異常是沒問題的,但是free拋出異常的時候問題就來了,當free拋出異常時,由于會脫離try塊,所以spool也會被析構,這樣就會陷入麻煩,由于沒有全部free,所以析構本身也會拋出異常,導致了類似于異常迭代的情況。也就是說,在throw一個異常的過程中又一次觸發了異常。于是windows系統的debug error對話框出現了,而且是出現在throw那一行。
            此隨筆用于提醒自己勿犯第二次!

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

            評論

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

            規范上一般不建議在析構函數里拋異常的吧~  回復  更多評論   

            伊人色综合久久天天网| 无码AV中文字幕久久专区| 久久99国产精品尤物| 9999国产精品欧美久久久久久| 久久精品成人| 青青草原综合久久| 97久久精品无码一区二区天美| 久久最新免费视频| 久久精品国产免费| 国产精品欧美久久久久天天影视| 久久AV无码精品人妻糸列| 欧美精品福利视频一区二区三区久久久精品 | 99久久国产主播综合精品| 亚洲av成人无码久久精品| 久久精品国产免费观看| 中文字幕精品无码久久久久久3D日动漫| 九九热久久免费视频| 欧美日韩精品久久久久| 久久亚洲国产精品123区| 久久天天日天天操综合伊人av| 免费精品99久久国产综合精品| 久久精品蜜芽亚洲国产AV| 久久精品成人免费网站| 国产精品久久久天天影视香蕉| 国产精品日韩深夜福利久久| 亚洲国产成人久久一区WWW| 久久无码中文字幕东京热| 久久99久久成人免费播放| 亚洲日本va午夜中文字幕久久 | 久久久免费观成人影院| 亚洲精品午夜国产VA久久成人| 久久99精品久久久久子伦| 久久99精品久久久久久不卡| 久久无码专区国产精品发布| 91亚洲国产成人久久精品| 亚洲欧美伊人久久综合一区二区| 久久久久亚洲精品中文字幕| 久久91精品国产91久| 精品久久久久久国产潘金莲 | 久久国产成人| 久久国产综合精品五月天|