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

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            delete operator

            Posted on 2009-05-10 17:27 S.l.e!ep.¢% 閱讀(1766) 評論(2)  編輯 收藏 引用 所屬分類: C++
            #include? < stdio.h >

            inline?
            void * ? operator ? new ?(size_t?size,? const ? char * ?fun)?
            {?
            ????
            return ??:: operator ? new (size);?
            }
            ?

            inline?
            void ? operator ?delete( void * ptr,? const ? char * ?fun)?
            {?
            ????
            if (ptr? == ?NULL)
            ????????
            return ;
            ????::
            operator ?delete(ptr);
            }


            #define ?__FUNCTION__?""
            #define ?NEW?new?(__FUNCTION__)
            #define ?DELETE?delete?(__FUNCTION__)

            int ?main( int ?argc,? char * ?argv[])
            {
            ????
            int * ?test? = ?NEW? int ();

            ????DELETE?test;?
            // ?warning?C4156:?deletion?of?an?array?expression?without?using?the?array?form?of?'delete';?array?form?substituted
            // ?warning?C4154:?deletion?of?an?array?expression;?conversion?to?pointer?supplied
            // ?error?C2541:?delete?:?cannot?delete?objects?that?are?not?pointers
            // ?error?C2146:?syntax?error?:?missing?';'?before?identifier?'test'
            ?
            ????
            return ? 0 ;
            }


            經(jīng)過 google 發(fā)現(xiàn) delete 的語法只支持一個參數(shù),暈。。而 new 就可以多個參數(shù)

            new-expression:
            ::opt new new-placementopt new-type-id new-initializeropt
            ::opt new new-placementopt ( type-id ) new-initializeropt
            new-placement:
            ( expression-list )
            ......

            delete-expression:
            ::opt delete cast-expression
            ::opt delete [ ] cast-expression

            最后沒辦法,只好這樣寫了
            #defind DELETE(x) ::operator delete((x), __FUNCTION__);

            Feedback

            # re: delete operator  回復(fù)  更多評論   

            2009-05-10 21:42 by OwnWaterloo
            這樣寫是不正確的。

            new操作符的含義是:
            1. 調(diào)用相應(yīng)的operator new分配內(nèi)存
            2. 在該內(nèi)存上構(gòu)造對象

            delete 操作符執(zhí)行相反的工作。
            1. 調(diào)用對象的析構(gòu)函數(shù)
            2. 調(diào)用operator delete釋放內(nèi)存。

            如果只調(diào)用operator delete, 對象析構(gòu)函數(shù)將得不到調(diào)用。

            # re: delete operator  回復(fù)  更多評論   

            2009-05-10 21:46 by OwnWaterloo
            樓主可以參考這篇文章, 為什么delete不能像new那樣使用。
            http://cpp.ga-la.com/html/24/26/0707/288.htm

            久久久精品无码专区不卡| 久久久WWW免费人成精品| 久久久久亚洲AV无码观看| 久久久午夜精品| 久久精品一本到99热免费| 欧美噜噜久久久XXX| 亚洲综合久久综合激情久久| 一本久久a久久精品综合夜夜| 久久久WWW成人免费精品| 久久久久久久97| 久久国产精品久久精品国产| 久久97久久97精品免视看秋霞| 亚洲国产精品嫩草影院久久| 人妻精品久久无码专区精东影业| 久久国产精品国产自线拍免费| 亚洲国产成人久久综合一区77| 亚洲精品乱码久久久久久| 国内精品久久久久久久久电影网| 久久丫忘忧草产品| 久久se精品一区精品二区国产| 一本久道久久综合狠狠爱| 久久高清一级毛片| 2021久久精品国产99国产精品| 亚洲午夜福利精品久久| 一本大道久久a久久精品综合 | 久久午夜福利无码1000合集| 久久精品无码一区二区无码| 无码人妻少妇久久中文字幕 | 91精品婷婷国产综合久久| 一本久久知道综合久久| 久久影视综合亚洲| 国产日韩欧美久久| 狠狠色伊人久久精品综合网| 久久精品嫩草影院| 久久99精品综合国产首页| 日日噜噜夜夜狠狠久久丁香五月 | 久久青青草原国产精品免费| 亚洲精品乱码久久久久久久久久久久 | 亚洲精品美女久久久久99| 国产精品久久久久蜜芽| 婷婷久久综合九色综合九七|