为什么我会在堆上放一个向量?

时间:2014-08-19 23:42:28

标签: c++

为什么我会在堆上放一个向量?

我经常看到这样的代码:

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

我能想到的唯一原因是我想分享这个向量,所以在现代C ++中我会使用shared_ptr。

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

1 个答案:

答案 0 :(得分:1)

对象是应该在堆栈上还是在堆上还是静态的问题都与生命周期有关。短期对象应该(通常)进入寄存器或堆栈;堆积如山的人;和永久的静态。

所以答案是肯定的,如果预期寿命很长,但是比程序的生命周期短,那么你就在堆上放了一个向量。

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

[HT @Eric Lippert在C#的背景下指出这一点