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

            Note of Justin

            關于工作和讀書的筆記

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              47 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

            留言簿(14)

            搜索

            •  

            積分與排名

            • 積分 - 53106
            • 排名 - 433

            最新評論

            閱讀排行榜

            評論排行榜

            [原創文章歡迎轉載,但請保留作者信息]
            Justin 于 2010-05-25


            到了七七四九章,大師已經帶領我們走進了全書的第八部分:定制new和delete。往往只有掌握了程序背后的內存管理機制,才能真正做到對程序的控制。上課上到這里,恭喜你慢慢在進步了。

            Item49要講的是當new失敗時,負責異常處理的new handler程序。大師說一個合格的new handler應該具備下面的特征:
            - 可以“擠”出更多的可用內存。本來喊你來就是因為沒有內存可以用,這個算是個最基本的要求了。
            - 當無法安排出更多可用內存時,要有下一步的解決方案。比如說找另外一個人來幫忙(通過set_new_handler來設置調用另一個new handler),或是變身為超人(通過改變函數自身的行為來進一步分配可用內存,說穿了就是類似下面的處理過程,當然實際并沒有那么簡單)
            if?(!?failed)
            {
            ???
            //do?the?normal?new?exception?handling
            ???if?(?cannot_make_more_memory_available?)
            ??????failed?
            =?1;
            }?
            else?{
            ???
            //do?another?way?around?to?get?more?memory
            }

            - 應該可以“卸載”new handler。也就是說可以禁止對new失敗時進行任何處理,或者說是關掉new handler,此時new的失敗會直接拋出異常。
            - 應該在無法安排更多可用內存時拋出bad_alloc或類似的異常,以讓申請內存的家伙知道這次沒有面包吃了。
            - 不會返回,一般而言,意味著該函數應該以abort或是exit自我了斷。

            在C++中可以專門為某個類實現其專屬的new handler,只要正確利用set_new_handler()就可以了。

            接下來大師寫了一個通用的模板類,幫助另外一個類實現安裝/卸載特定的new handler。它的設計很簡單,在調用new之前安裝指定的new handler,調用結束后卸載并恢復原先的全局handler。安裝new handler的函數、重載的new函數以及用于暫時保存new handler的函數指針都是靜態的(static),這樣做的目的是可以基于模板類的每個模板參數生成一套專屬的實例。例子在書上,就不畫蛇添足了。
            posted on 2010-05-26 04:20 Justin.H 閱讀(574) 評論(0)  編輯 收藏 引用 所屬分類: Effective C++ 炒冷飯
            91久久精品国产成人久久| 97久久国产露脸精品国产| 国产亚洲色婷婷久久99精品91| 婷婷久久综合九色综合98| 久久国产视屏| 国产成年无码久久久久毛片| 国产精品九九久久免费视频| 一本色道久久88—综合亚洲精品| 99国产欧美精品久久久蜜芽| 国产精品美女久久久久av爽| 久久精品水蜜桃av综合天堂| 久久久久久亚洲精品无码| 国产精品久久久久9999| 2021最新久久久视精品爱| 国产精品青草久久久久福利99| 久久精品亚洲日本波多野结衣 | 久久91精品国产91| 91精品国产91久久久久久蜜臀| 精品久久久无码人妻中文字幕| 麻豆久久| 婷婷久久综合九色综合绿巨人| 狠狠色丁香久久综合五月| 亚洲va久久久噜噜噜久久天堂| 久久精品国产精品亚洲下载| 亚洲国产精品久久久久| 久久久精品午夜免费不卡| 久久久久久午夜成人影院| 日韩精品久久久肉伦网站| 久久中文字幕人妻熟av女| 亚洲国产精品无码久久九九 | 久久久久综合网久久| 99久久精品国产免看国产一区| 久久综合香蕉国产蜜臀AV| 99久久国产精品免费一区二区| 国内精品人妻无码久久久影院导航| 伊人久久大香线蕉精品不卡| 久久久久国产精品三级网| 久久久久久久91精品免费观看| 四虎影视久久久免费观看| 中文精品久久久久人妻不卡| 奇米影视7777久久精品|