• <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 常興龍 閱讀(197) 評論(0)  編輯 收藏 引用
            > hi的博客
            久久99热只有频精品8| 色欲综合久久中文字幕网| 国产综合久久久久久鬼色| 久久A级毛片免费观看| 久久人人爽人人爽人人片AV麻豆| 久久受www免费人成_看片中文| 日韩AV无码久久一区二区| 日韩久久久久中文字幕人妻| 久久综合噜噜激激的五月天| 久久97精品久久久久久久不卡| 精品国产乱码久久久久软件| 丰满少妇人妻久久久久久4| 久久精品国产99久久无毒不卡 | 久久精品国产男包| 麻豆亚洲AV永久无码精品久久| 久久伊人亚洲AV无码网站| 国产产无码乱码精品久久鸭| 日韩欧美亚洲综合久久影院Ds | 久久久久久久综合狠狠综合| 久久精品国产精品青草 | 热re99久久6国产精品免费| 国产无套内射久久久国产| 精品久久久久中文字幕日本| 色播久久人人爽人人爽人人片AV| 国产精品久久亚洲不卡动漫| 国产亚洲精品美女久久久| 久久久久人妻一区二区三区 | 久久亚洲AV成人无码国产| 日韩久久久久中文字幕人妻| 国产精品九九久久免费视频| 精品亚洲综合久久中文字幕| 久久精品国产亚洲AV无码麻豆| 一级a性色生活片久久无| 久久久久国产日韩精品网站| 久久夜色撩人精品国产| 91精品国产91久久久久久| 久久国产成人午夜aⅴ影院 | 国产精品18久久久久久vr| 久久婷婷成人综合色综合| 无码人妻精品一区二区三区久久 | 精品人妻伦一二三区久久|