gpt4 book ai didi

c++ - 清除指针 vector

转载 作者:IT老高 更新时间:2023-10-28 12:46:47 24 4
gpt4 key购买 nike

假设我已经定义了一个这样的类:

 class foo {
private:
std::vector< int* > v;
public:
...
void bar1()
{
for (int i = 0; i < 10; i++) {
int *a = new int;
v.push_back( a );
}
};

void bar2()
{
std::vector< int >::iterator it = v.begin();
for ( ; it != v.end(); it++ )
std::cout << (*it);
v.clear();
}
};

简而言之,我推回 vector 中的一些指针,然后清除 vector 。问题是,这段代码有内存泄漏吗?我的意思是清除 vector ,指针是否正确删除?

最佳答案

是的,除非您删除指针,否则代码存在内存泄漏。如果 foo 类拥有指针,则它有责任删除它们。您应该在清除 vector 之前执行此操作,否则您会丢失需要取消分配的内存的句柄。

   for (auto p : v)
{
delete p;
}
v.clear();

您可以通过使用合适的 smart pointerstd::vector 来完全避免内存管理问题。 .

关于c++ - 清除指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12795196/

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