C++删除函数中的局部变量
C++ deleting local variables in function
我有适用于类 A 的函数.类 A 在构造函数中分配一些内存并在析构函数 A::~A() 中释放它。
现在如果。
A someFunc()
{
//This is just to illustrate that it is possible for that variable to be overwritten few times before returning.
A locA;
for(some condition)
{
//Something something
A forA(i);
//Something.
if(end) locA = forAj;
}
return locA;
}
这样好吗?每次在 for 循环中再次创建时都会调用该类的析构函数吗?
每次在 for 循环中再次创建时都会调用该类的析构函数吗?
是的,变量具有自动存储功能A
因此每次其中一个变量超出范围时都会调用 的析构函数。
如果你的类表现良好,A
中分配的内存应该得到适当的处理。请注意,这意味着在您的情况下,A
还应该有一个合适的复制构造函数和一个复制赋值运算符,以便表现良好。
有关最后一点的更多信息,请参阅三法则。
相关文章:
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 是否可以影响 C++ 中回调函数的局部变量?
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 调用一个小函数两次(例如在if条件和主体中)比将结果存储在局部变量中更可取
- C++ - 指向函数中局部变量的指针
- 如何在 C++ 的 lambda 函数中传递同名的局部变量和参数(使用此关键字)?
- Clang++ 6.0 内存清理器未报告返回值指示条件分支的函数中的未初始化局部变量
- 如何将局部变量传递给 lambda 函数
- 局部变量的作用域是块或函数
- 函数原型未初始化的局部变量
- 尝试声明函数的局部变量,但得到范围错误
- 如果对象是通过 new 创建的,则成员函数的局部变量在哪里创建?
- 如果两个线程调用同一个函数,但函数中的所有变量都是局部变量,我还需要担心线程之间共享数据吗?
- 如果函数抛出的异常可能未捕获,如何销毁局部变量?
- 为什么不能在模板函数中向局部变量添加低级 const 类型
- 使用clang_complete自动完成局部变量/函数