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

            road420

            導航

            <2008年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            統計

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            懸掛指針

            懸掛指針與boost::weak_ptr

               與內存泄露相比,C++最令人頭痛的問題是內存越界,而內存越界很多情況下是由于懸掛指針引起的。  
              假設一個指針變量:
              Object * ptr;
              使用ptr時,我們除了要判斷ptr是否為0以外,還要懷疑它指向的對象是否有效,是不是已經在別的地方被銷毀了。我們希望當它指向的對象被銷毀時,ptr被自動置為0。
              顯然,C++沒有這種機制,但是,可以借助于boost::weak_ptr做到這一點。

            inline void null_deleter(void const *
            {
            }

            class X
            {
            private:

                shared_ptr
            <X> this_;
                
            int i_;

            public:

                
            explicit X(int i): this_(this, &null_deleter), i_(i)
                {
                }

                X(X 
            const & rhs): this_(this, &null_deleter), i_(rhs.i_)
                {
                }

                X 
            & operator=(X const & rhs)
                {
                    i_ 
            = rhs.i_;
                }

                weak_ptr
            <X> weak_this() const { return this_; }
            };


             

            定義變量:
            weak_ptr<X> ptr = x.weak_this();  // x為一個X 對象 

            則當 x 被銷毀時,ptr 被自動置為無效。使用方法如下:

            if ( shard_ptr<X>  safePtr  = ptr.lock() )  safePtr->do_something();

            這種辦法用于單線程中,因為 x  對象可能是基于棧分配的。如果需要在多線程中訪問X對象,那么最好的辦法還是使用shared_ptr 來管理對象的生命期。這樣的話,對于safePtr, 可以保證在 safePtr 的生命期內,它所指向的對象不會被其它線程刪除。

            posted on 2007-11-09 19:28 深邃者 閱讀(560) 評論(0)  編輯 收藏 引用

            一本一道久久精品综合| 久久久亚洲AV波多野结衣| 国产日韩欧美久久| 欧美粉嫩小泬久久久久久久| 亚洲&#228;v永久无码精品天堂久久 | 99久久国产主播综合精品| 综合久久给合久久狠狠狠97色| 久久精品国产久精国产一老狼| 亚洲嫩草影院久久精品| 中文无码久久精品| 亚洲精品tv久久久久| 久久午夜电影网| 狠狠色综合网站久久久久久久高清| 麻豆精品久久精品色综合| 久久久久亚洲av无码专区导航| 久久综合狠狠综合久久97色| 精品国产VA久久久久久久冰| 亚洲精品99久久久久中文字幕| 精品久久久久久国产牛牛app| 久久精品黄AA片一区二区三区| 久久影院久久香蕉国产线看观看| 久久久久国产一级毛片高清版| 99999久久久久久亚洲| 亚洲精品美女久久777777| 久久久久亚洲国产| 亚洲婷婷国产精品电影人久久 | 亚洲欧美日韩精品久久亚洲区 | 狠狠干狠狠久久| 精品久久久噜噜噜久久久| 久久久久久久97| 久久婷婷午色综合夜啪| 综合久久精品色| 精品国产乱码久久久久软件| 亚洲欧美成人综合久久久| 久久99久久99精品免视看动漫| 伊人久久精品无码二区麻豆| 一本色道久久88—综合亚洲精品| 久久精品国产清自在天天线| 97久久婷婷五月综合色d啪蜜芽| 亚洲人成无码久久电影网站| 久久亚洲国产精品成人AV秋霞|