在C++中有两种方法可以声明一个对象。例如:基于C++堆栈的对象分配
// The first way
vector<int> *nums = new vector<int>;
// The second way
vector<int> nums;
人们说第一个声明在堆中分配对象,在堆栈中分配第二个对象。我可以想象如果矢量对象在堆中,它是如何工作的。编译器只会在堆中找到一个空闲块来存储该向量。但是,如果将对象分配到堆栈上,我会不断向该向量推送新元素,会发生什么情况?会有足够的内存空间吗?如果不是,当编译器的大小可以改变时,编译器如何在堆栈中找到足够大的内存块来存储该向量?
大初学者的问题,并很好地说明。 – 2015-03-18 21:59:28