我是否更喜欢对非指针成员进行显式分配?

时间:2016-01-23 05:50:05

标签: c++

我有一个75x75类,我用它作为内部日志记录工具。它可以增长到数千个字符串条目。我将它附加到这样的类:

Console

我的理解是,我是这样做的,还是有class App{ public: Console console; ... 的成员(或共享指针变体),无论是在静态存储区域中分配,还是在内存使用方面,两种方法都差不多。这是对的吗?

我还有其他理由或考虑因为我更喜欢采用其中一种方法吗?如果这是堆栈内存区域,我知道有更明显的理由选择大型对象的指针分配,但我不认为这适用于此。

因为我可以得到这个罚款的地址,如果我确实需要一个指针,这是微不足道的传递,所以我没有看到在这种情况下明确分配这个明显的优势。建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果你有一个指向对象的指针或智能指针,那意味着该对象将从堆中分配。

如果App有一个直接的控制台成员,那么它将从与App对象相同的池中分配。

如果Console将字符串存储为标准库容器中的std :: strings或特别是std :: strings,那么存储并不重要,因为无论如何都会从堆中动态分配字符串数据。

所以我建议让控制台作为会员,因为这是最轻松的方式,除非你有例如在App运行时需要更改为其他控制台。