gpt4 book ai didi

c++ - 我应该更喜欢显式分配而不是非指针成员吗?

转载 作者:行者123 更新时间:2023-11-28 05:52:23 25 4
gpt4 key购买 nike

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

class App{
public:

Console console;
...

我的理解是,无论我是这样做还是有一个成员是 Console* console(或共享指针变体),无论哪种方式,它都分配在静态存储区域中,并且尽可能随着内存使用的进行,这两种方法都差不多。这是正确的吗?

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

因为我可以获得这个 fine 的地址,如果我确实需要一个指针,传递它是微不足道的,所以我看不到在这种情况下显式分配它的明显优势。不胜感激。

最佳答案

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

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

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

所以我建议只将控制台作为成员,因为这是最省事的方式,除非你有,例如需要在应用程序运行时更改为不同的控制台。

关于c++ - 我应该更喜欢显式分配而不是非指针成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com