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

            導(dǎo)航

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

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            懸掛指針

            懸掛指針與boost::weak_ptr

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

            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為一個(gè)X 對象 

            則當(dāng) x 被銷毀時(shí),ptr 被自動置為無效。使用方法如下:

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

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

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


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            中文成人无码精品久久久不卡 | 久久精品国产欧美日韩| 青青草原综合久久大伊人精品| 久久久久久久人妻无码中文字幕爆| 亚洲AV乱码久久精品蜜桃| 91精品国产9l久久久久| 国产精品免费久久久久影院| 色99久久久久高潮综合影院| 日韩精品久久久久久久电影蜜臀| 国产精品女同久久久久电影院| 99久久无码一区人妻| 久久乐国产综合亚洲精品| 久久99中文字幕久久| 久久人与动人物a级毛片| 久久精品国产亚洲综合色| 国产精品乱码久久久久久软件| 三上悠亚久久精品| 亚洲AV伊人久久青青草原| 久久精品国产免费| 性欧美丰满熟妇XXXX性久久久| 久久亚洲国产中v天仙www| 亚洲国产精品成人久久| 亚洲午夜福利精品久久| 狠狠久久综合伊人不卡| 久久国产精品-国产精品| 综合网日日天干夜夜久久| 亚洲成av人片不卡无码久久 | 久久中文字幕精品| 精品国产91久久久久久久a| 亚洲成色WWW久久网站| 久久99热这里只有精品国产| 少妇久久久久久被弄到高潮| 久久精品国产一区二区三区不卡 | 亚洲色婷婷综合久久| 国内精品久久久久影院老司| 91久久精品视频| 亚洲精品高清久久| 国产福利电影一区二区三区,免费久久久久久久精 | 狠狠色丁香婷婷久久综合不卡| 欧美黑人激情性久久| 亚洲AV日韩AV永久无码久久|