2016-01-23 42 views
0

我有一個Console類,我用它作爲內部日誌記錄工具。它可能會增長到數千個字符串條目。我把它連接到類像這樣:我應該更喜歡通過非指針成員進行顯式分配嗎?

class App{ 
public: 

    Console console; 
... 

我的理解是,無論我做這種方式或替代有一個成員是Console* console(或共享的指針變體),它是在靜態存儲區域分配兩種方式就內存使用情況而言,這兩種方法都大致相同。它是否正確?

有什麼其他原因或考慮,爲什麼我更喜歡一種或另一種方法?如果這是堆棧內存區域,我知道有一個更明顯的理由來選擇大對象的指針分配,但我認爲這不適用於此。

因爲我可以得到這個罰款的地址,如果我需要一個指針,這是微不足道的傳遞,所以我沒有看到在這種情況下明確分配這個明確的優勢。建議感激。

回答

1

如果您有指向對象的指針或智能指針,則表示該對象將從堆中分配。

如果應用程序具有直接的控制檯成員,則它將從與App對象相同的池中分配。

如果控制檯將字符串存儲爲標準庫容器中的std :: strings或特別是std :: strings,那麼存儲並不重要,因爲字符串數據將從堆中動態分配。

所以我建議只要讓控制檯成爲會員,因爲這是最簡單的免費方式,除非你有例如在應用程序運行時需要更改爲不同的控制檯。

相關問題