相关疑难解决方法(0)

std :: vector在哪里分配内存?

请考虑以下代码段:

#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;
}
Run Code Online (Sandbox Code Playgroud)

假设"vec"没有空间将5存储在"sub"函数中,它在哪里分配新的内存?

在子函数的堆栈框架中?在这种情况下,5将在子函数的末尾被删除.但是主函数的堆栈帧不能增长,因为子函数的堆栈帧在那一刻位于堆栈的顶部.
std :: vector是否为堆上的元素分配内存?但它如何释放堆内存呢?如果它是堆栈上的本地向量,那么包含该向量的函数的堆栈帧最终会被删除,而不会发信号通知它将被删除吗?

c++ memory-management stl vector

26
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×1

memory-management ×1

stl ×1

vector ×1