gpt4 book ai didi

涉及 vector 的C++内存分配问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:15 29 4
gpt4 key购买 nike

vector< int > vect;
int *int_ptr = new int(10);
vect.push_back( *int_ptr );

我知道每个"new"都需要在某个时候跟一个“删除”,但是 clear() 方法是否会清除此内存?

这种做同样事情的方法怎么样:

vector< int > vect;
int int_var = 10;
vect.push_back( int_var );

据我所知,clear() 调用变量析构函数,但此示例中的两个 vect.push_back() 方法都将一个对象推送到 vector 上,而不是指针。那么使用 int 指针的第一个示例是否需要 clear() 以外的东西来清理内存?

最佳答案

第一个方法会泄漏,因为 vector 永远不会获得分配的指针的所有权。事实上,它根本不包含指针,只包含值的拷贝。

第二种方法不会泄漏,因为没有内存是动态分配的( vector 内部除外——它将自己处理该内存)。

关于涉及 vector 的C++内存分配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2791540/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com