[英]Should I prefer an explicit allocation over a non-pointer member?
我有一个Console
类,用作内部日志记录工具。 它可能会增长到成千上万个字符串条目。 我将其附加到这样的类中:
class App{
public:
Console console;
...
我的理解是,无论我是以这种方式执行操作,还是以拥有Console* console
(或共享指针变体)成员的方式进行操作,无论哪种方式,都将其分配在静态存储区域中,并且就内存使用而言,这与两种方法都一样。 这个对吗?
还有其他原因或考虑因素使我偏爱一种或另一种方法吗? 如果这是堆栈存储区,我知道会有更多明显的理由倾向于为大对象分配指针,但是我认为这并不适用。
因为我可以得到很好的地址,所以如果我确实需要一个指针,那么传递它是微不足道的,因此我看不出在这种情况下显式分配此地址的明显优势。 意见表示赞赏。
如果您有一个指向该对象的指针或智能指针,则意味着该对象将从堆中分配。
如果App具有直接的Console成员,则将从与该App对象相同的池中分配它。
如果Console将字符串存储为标准库容器中的std :: strings或特别是std :: strings,则存储的关系不大,因为无论如何仍会从堆中动态分配字符串数据。
因此,我建议仅将Console作为成员,因为这是最轻松的方式,除非您有例如需要在App运行时更改为其他Console。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.