gpt4 book ai didi

c++ - 为什么我要把一个 vector 放在堆上?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:36 27 4
gpt4 key购买 nike

为什么我要把 vector 放在堆上?

我经常看到这样的代码:

std::vector<int> *v = new std::vector<int>();

我能想到的唯一原因是如果我想共享这个 vector ,那么在现代 C++ 中我会使用 shared_ptr。

将 vector 放在堆上还有其他原因吗?我的意思是 vector 中的元素已经在堆上分配了。

最佳答案

一个对象是应该在栈上还是在堆上还是静态的问题都是关于生命周期的。短期对象应该(通常)进入寄存器或堆栈;堆上长寿的;和永久静态的。

所以答案是肯定的,如果预期有较长的生命周期但比程序的生命周期短,则将 vector 放在堆上。

共享指针的问题仅适用于要共享某些内容的情况,这又是一个不同的考虑因素。

[HT @Eric Lippert 在 C# 上下文中指出了这一点]

关于c++ - 为什么我要把一个 vector 放在堆上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25394685/

27 4 0