91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

空間配置器

發布時間:2020-07-27 04:18:46 來源:網絡 閱讀:282 作者:xiexiankun 欄目:編程語言

1. 空間配置器:內存池實現小塊內存分配,對應到設計模式--單例模式(工具類,提供服務,一個程序只需要一個空間配置器即可),享元模式(小塊內存統一由內存池進行管理)

2.迭代器:迭代器模式,模板方法

3.容器:STL的核心之一,其他組件圍繞容器進行工作:迭代器提供訪問方式,空間配置器提供容器內存分配,算法對容器中數據進行處理,仿函數偽算法提供具體的策略,類型萃取  實現對自定義類型內部類型提取。保證算法覆蓋性。其中涉及到的設計模式:組合模式(樹形結構),門面模式(外部接口提供),適配器模式(stack,queue通過deque適配得  到),建造者模式(不同類型樹的建立過程)。

4.類型萃取:基于范型編程的內部類型解析,通過typename獲取。可以獲取迭代器內部類型value_type,Poter,Reference等。

5.仿函數:一種類似于函數指針的可回調機制,用于算法中的決策處理。涉及:策略模式,模板方法。

6適配器:STL中的stack,queue通過雙端隊列deque適配實現,map,set通過RB-Tree適配實現。涉及適配器模式。

關于六大組件之間的具體關系如圖簡單描述

空間配置器

ps(圖技術比較水,見諒,如有bug,請指正)

 

貌似扯的多了,來談談主題《空間配置器》問題吧。

STL空間配置器產生的緣由:

  在軟件開發,程序設計中,我們不免因為程序需求,使用很多的小塊內存(基本類型以及小內存的自定義類型)。在程序中動態申請,釋放。

這個過程過程并不是一定能夠控制好的,于是乎,

問題1:就出現了內存碎片問題。(ps外碎片問題)

問題2:一直在因為小塊內存而進行內存申請,調用malloc,系統調用產生性能問題。

注:內碎片:因為內存對齊/訪問效率(CPU取址次數)而產生 如 用戶需要3字節,實際得到4或者8字節的問題,其中的碎片是浪費掉的。

  外碎片:系統中內存總量足夠,但是不連續,所以無法分配給用戶使用而產生的浪費。下邊簡單圖解

空間配置器

這兩個問題解釋清楚之后,就來談STL空間配置器的實現細節了

實現策略

  用戶申請空間大于128?

  yes:調用一級空間配置器

  no:調用二級空間配置器

大致實現為:

  二級空間配置由內存池以及伙伴系統:自由鏈表組成

  一級空間配置器直接封裝malloc,free進行處理,增加了C++中的set_handler機制(這里其實也就是個略顯牽強的裝飾/適配模式了),增加內存分配時客戶端可選處理機制。

可配置性:

  客戶端可以通過宏__USE_MALLOC進行自定義選擇是否使用二級空間配置器。

一級空間配置器就主要封裝malloc,添加handler機制了,這里就不羅嗦了,相信各位都是可以通過源碼了解到的

關于二級空間配置器:

空間配置器


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀远县| 湘西| 松阳县| 连江县| 玉林市| 万盛区| 汉中市| 榆中县| 青冈县| 高碑店市| 肃宁县| 明星| 平远县| 北票市| 旬邑县| 临沂市| 原平市| 桂阳县| 辽源市| 湘潭市| 石屏县| 抚松县| 石门县| 昂仁县| 禄劝| 平乡县| 上思县| 通海县| 阜平县| 正镶白旗| 大连市| 绥芬河市| 牡丹江市| 灵璧县| 驻马店市| 武冈市| 突泉县| 时尚| 乐清市| 安多县| 郴州市|