2017-09-03 82 views
-3

我有一個複雜的結構,我需要在堆上分配。它由一些基本類型和自定義對象組成。這些自定義對象由一些基本類型和一些其他自定義對象組成。這些自定義對象是由一些基本類型和一些其他自定義對象,等cetara ...在堆上分配和分片

我一直在做的方式是存儲基本類型作爲自動變量,同時使自定義對象(聰明)指針。

但是,由於主對象是作爲(智能)指針創建的,因此無論如何所有這些都分配在堆上,不是嗎?但每次我使用另一個(智能)指針時,它都會執行另一次分配並分割內存,對吧?

所以我不應該使用指針,除了最初的一個把它放在堆上,不是嗎?所有具有可變尺寸的對象都有可更改的部分存儲在地圖或矢量中,它們自己分配東西,但在這一點上,這是必需的,因爲我不知道有多少(如果有的話)將有。

無論如何,我是否有這種想法? 指針的使用越少越好?

+0

請顯示一些代碼,而不是說MCVE。 – Yunnosch

+2

另外,我不會過早優化。如果你認爲這可能是一個問題,那麼建立一個實驗來確定它是否是一個問題。 – NPE

+0

如果確實發現碎片是一個問題,那麼您可以隨時使用slab分配器或類似的方法處理它。但很可能它不會成爲一個問題,所以現在不用擔心它,您可能會避免做大量不必要的工作,併爲您的程序增加大量不必要的複雜性。 –

回答

0

從設計的角度出發,使用更有意義的東西。

如果事實證明減慢(反正它可能不會),那麼可以通過配置文件來優化瓶頸。

+0

我有一個很大的結構,我需要能夠讀取和更改。他最大的一點是結構會趨向於被修改,其中的部分將會(stl容器)將成員添加和刪除。考慮到所有這些,是否有指向已經在堆上的結構中的對象的指針,還是隻將它們分配爲包含它們的對象的一部分? – Karlovsky120