Рассмотрим следующий фрагмент кода:
#include <vector>
using namespace std;
void sub(vector<int>& vec) {
vec.push_back(5);
}
int main() {
vector<int> vec(4,0);
sub(vec);
return 0;
}
Предполагая, что "vec" не осталось места для хранения 5 в "под" функции, где она выделяет новую память?
В кадре стека подфункции? В этом случае 5 будет удалено в конце вспомогательной функции. Но кадр стека основной функции не может расти, так как в этот момент стек стека подфункции лежит поверх стека.
Разделяет ли std::vector память для своих элементов в куче?
Но как он освобождает память кучи?
Если это локальный вектор в стеке, кадр стека функции, включая вектор, удаляется в конце, не сигнализируя, что вектор будет удален?