在嵌入式類型系統上,我創建了一個小型對象分配器,它可以支持標準內存分配系統。這個分配器是一個Boost :: simple_segregated_storage類,它正是我所需要的 - O(1)alloc/dealloc時間在一些內部碎片的代價下的小對象。我的問題是如何最好地聲明它。現在,它是在我們的mem代碼模塊中聲明的範圍靜態,這可能很好,但它感覺有點暴露在那裏,現在也永遠鏈接到該模塊。通常情況下,我將它聲明爲monostate或singleton,但是它使用動態內存分配器(其位於此處)。此外,在我們的系統上發生靜態對象初始化之前,我們正在初始化和使用動態內存分配器(同樣,內存管理器幾乎是引擎最基本的組成部分。)爲了解決這個問題,我添加了一個額外的'如果存在小內存分配器'來查看是否存在小對象分配器。如果現在必須在每個小對象分配上運行。在事情的計劃中,這幾乎可以忽略不計,但它仍然困擾着我。設計:如何聲明專用的內存處理程序類
所以問題是,有沒有更好的方法來聲明這部分內存管理器,它有助於從內存模塊解耦,也許不會花費額外的isinitialized()if語句?如果此方法使用動態內存,請解釋如何避免管理器的小對象部分初始化不足。
我一直在ARM上設計這樣的事情。我見過的庫不是專爲具有8K或更少RAM的系統設計的。如果速度不重要,我希望垃圾收集的字符串/數組類可以在許多使用場景中最終需要不到常用庫的一半RAM(例如,外部引用會將'uint16_t'索引放入托管數組中引用;引用或原始字節的小數組會有兩個字節的開銷,引用每個需要兩個字節;較大的數組會有大約4%的額外開銷)。 – supercat 2015-03-02 18:31:40
這樣的設計看起來是否合理?你知道這是否完成了嗎? – supercat 2015-03-02 18:31:57