我有一个75x75
类,我用它作为内部日志记录工具。它可以增长到数千个字符串条目。我将它附加到这样的类:
Console
我的理解是,我是这样做的,还是有class App{
public:
Console console;
...
的成员(或共享指针变体),无论是在静态存储区域中分配,还是在内存使用方面,两种方法都差不多。这是对的吗?
我还有其他理由或考虑因为我更喜欢采用其中一种方法吗?如果这是堆栈内存区域,我知道有更明显的理由选择大型对象的指针分配,但我不认为这适用于此。
因为我可以得到这个罚款的地址,如果我确实需要一个指针,这是微不足道的传递,所以我没有看到在这种情况下明确分配这个明显的优势。建议表示赞赏。
答案 0 :(得分:1)
如果你有一个指向对象的指针或智能指针,那意味着该对象将从堆中分配。
如果App有一个直接的控制台成员,那么它将从与App对象相同的池中分配。
如果Console将字符串存储为标准库容器中的std :: strings或特别是std :: strings,那么存储并不重要,因为无论如何都会从堆中动态分配字符串数据。
所以我建议让控制台作为会员,因为这是最轻松的方式,除非你有例如在App运行时需要更改为其他控制台。