为什么我会在堆上放一个向量?
我经常看到这样的代码:
std::vector<int> *v = new std::vector<int>();
我能想到的唯一原因是我想分享这个向量,所以在现代C ++中我会使用shared_ptr。
将堆放在堆上还有其他原因吗?我的意思是向量中的元素已经分配了堆。
答案 0 :(得分:1)
对象是应该在堆栈上还是在堆上还是静态的问题都与生命周期有关。短期对象应该(通常)进入寄存器或堆栈;堆积如山的人;和永久的静态。
所以答案是肯定的,如果预期寿命很长,但是比程序的生命周期短,那么你就在堆上放了一个向量。
共享指针的问题仅适用于要共享的内容,这是一个不同的考虑因素。
[HT @Eric Lippert在C#的背景下指出这一点