• <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 常興龍 閱讀(199) 評論(0)  編輯 收藏 引用
            > hi的博客
            国产精品美女久久久| 夜夜亚洲天天久久| 久久精品国产亚洲AV高清热| 亚洲中文久久精品无码ww16| 久久A级毛片免费观看| 99久久精品免费观看国产| 久久精品女人天堂AV麻| 综合久久国产九一剧情麻豆| 久久免费精品一区二区| 久久www免费人成看片| 97久久综合精品久久久综合| 亚洲一区精品伊人久久伊人 | 欧洲性大片xxxxx久久久| 无码超乳爆乳中文字幕久久| 久久中文娱乐网| 久久精品国产亚洲AV香蕉| 久久久精品视频免费观看| 久久婷婷五月综合色奶水99啪| 国产精品久久久久影院色| 久久福利资源国产精品999| 成人亚洲欧美久久久久| 久久亚洲精品中文字幕| 亚洲欧洲久久久精品| 久久久久99精品成人片| 伊人久久综在合线亚洲2019| 无码人妻久久一区二区三区 | 免费一级欧美大片久久网| 国产V亚洲V天堂无码久久久| 2021国产精品久久精品| 午夜精品久久久久9999高清| 欧美777精品久久久久网| 国产精品99久久99久久久| 欧美一区二区三区久久综合| 综合网日日天干夜夜久久| 亚洲精品午夜国产VA久久成人| 久久精品人妻中文系列| 99久久综合国产精品免费| 精品久久久久久无码不卡| 久久亚洲AV无码精品色午夜麻豆 | www久久久天天com| 老司机国内精品久久久久|