• <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的博客
            久久精品青青草原伊人| 大香伊人久久精品一区二区| 亚洲人成精品久久久久| 日韩av无码久久精品免费| 国产精品99久久免费观看| 久久er国产精品免费观看8| 99久久精品免费看国产一区二区三区| 伊人久久大香线蕉成人| 久久综合亚洲欧美成人| 久久五月精品中文字幕| 久久精品中文字幕一区| 久久国产精品成人免费| 亚洲国产综合久久天堂 | 国产精品久久久久久五月尺| 久久久久久无码Av成人影院| 99久久精品免费| 精品熟女少妇av免费久久| 久久亚洲精品国产亚洲老地址| 狠狠色丁香久久综合婷婷| 99久久免费国产精品特黄| 久久国产美女免费观看精品| 97久久超碰成人精品网站| 亚洲国产另类久久久精品黑人| 亚洲国产成人精品无码久久久久久综合 | 久久精品中文闷骚内射| 久久乐国产综合亚洲精品| 久久免费国产精品| 亚洲综合伊人久久大杳蕉| 久久人人爽人人澡人人高潮AV| 7777精品久久久大香线蕉| 武侠古典久久婷婷狼人伊人| 日本三级久久网| 国产亚洲美女精品久久久久狼| 久久精品国产亚洲av水果派| 无码超乳爆乳中文字幕久久 | 国内精品久久久久影院老司| 九九久久精品国产| 久久亚洲国产精品123区| 久久av高潮av无码av喷吹| 国产午夜电影久久| 久久一区二区免费播放|