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

            C++研究

            C++細節深度探索及軟件工程

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              37 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
            Memory leaks , more important in Symbian C++ than that's in the PCS, But when you programs for a Media Processor which must run for there year or even much longer , you must consider Memory leaks seriously. How can avoid leaking?
             
            1. remeber delete after you new operation
             
            Just this is enougn? Of course , Many leaks come from this stimulation. but that's not all.
            for E.G:
            class ClassB {
            private:
            ClassA* ptr1; //pointer members
            ClassA* ptr2;
            public:
            //constructor that initializes the pointers
            //- will cause resource leak if second new throws
            ClassB (ClassA val1, ClassA val2)
            : ptr1(new ClassA(val1)), ptr2(new ClassA(val2)) {
            }
            //copy constructor
            //- might cause resource leak if second new throws
            ClassB (const ClassB& x)
            : ptr1(new ClassA(*x.ptr1)), ptr2(new ClassA(*x.ptr2)) {
            }
            //assignment operator
            const ClassB& operator= (const ClassB& x) {
            *ptr1 = *x.ptr1;
            *ptr2 = *x.ptr2;
            return *this;
            }
            ~ClassB () {
            delete ptr1;
            delete ptr2;
            }
            ...
            };
            if an exception occurs inside a constructor,
            destructors are only called for objects that have been fully constructed. This might result in a
            resource leak if, for example, the first new was successful but the second was not.
             
            2.How can I avoid such a possible resource leak?
            you can use simply auto_ptr.(In Symbian , in my opinion ,The CleanStack works in the same machanism)
             
            The code can write like the follows:
            class ClassB {
            private:
            const std::auto_ptr<ClassA> ptr1; //auto_ptr members
            const std::auto_ptr<ClassA> ptr2;
            public:
            //constructor that initializes the auto_ptrs
            //- no resource leak possible
            ClassB (ClassA val1, ClassA val2)
            : ptr1 (new ClassA(val1)), ptr2(new ClassA(val2)) {
            }
            //copy constructor
            //- no resource leak possible
            ClassB (const ClassB& x)
            : ptr1(new ClassA(*x.ptr1), ptr2(new ClassA(*x.ptr2)) {
            }
            const ClassB& operator= (const ClassB& x) {
            *ptr1 = *x.ptr1;
            *ptr2 = *x.ptr2;
            return *this;
            }
            //no destructor necessary
            //(default destructor lets ptr1 and ptr2 delete their objects)
            ...
            };
             
            Note, however, that although you can skip the destructor, you still have to program the copy
            constructor and the assignment operator. By default, both would try to transfer ownership, which
            is probably not the intention. In addition, and as mentioned on page 42, to avoid an unintended
            transfer of ownership you should also use constant auto_ptrs here if the auto_ptr should
            refer to the same object throughout its lifetime
            posted on 2007-04-16 22:22 常興龍 閱讀(200) 評論(0)  編輯 收藏 引用
            > hi的博客
            国内精品伊人久久久久网站| 亚洲国产另类久久久精品黑人| 粉嫩小泬无遮挡久久久久久| 精品久久久久久无码专区| 精品精品国产自在久久高清| 久久久免费观成人影院 | 亚洲国产精品无码久久久蜜芽| 日本人妻丰满熟妇久久久久久| 国产无套内射久久久国产| 婷婷久久五月天| 99久久99久久精品国产片| 亚洲中文字幕无码久久2017| 国产精品久久久久乳精品爆| 蜜桃麻豆WWW久久囤产精品| 青青青国产精品国产精品久久久久 | 欧美噜噜久久久XXX| 丁香五月综合久久激情| 亚洲AV无码久久精品色欲| 国产精品亚洲综合专区片高清久久久 | 亚洲欧美日韩中文久久| 精品无码久久久久久久动漫| 久久超乳爆乳中文字幕| 三级三级久久三级久久| 久久综合一区二区无码| 国产高清美女一级a毛片久久w | 日本国产精品久久| 一级做a爰片久久毛片人呢| 久久久久久毛片免费播放| 99精品国产免费久久久久久下载| 精品国产婷婷久久久| 爱做久久久久久| 久久精品不卡| 久久久WWW成人免费精品| 久久国产成人午夜AV影院| 97久久精品国产精品青草| 国内精品久久久久伊人av| 精品人妻久久久久久888| 97精品伊人久久大香线蕉app| 精品熟女少妇a∨免费久久| 国产精品美女久久久| 久久夜色tv网站|