如果程序退出循环是goto已删除的本地变量
If program exits loop by goto are local variables deleted?
通常,当您退出时,对于循环说,在内部声明的变量将被删除。例如:
for(int i=0; i<10; i++)
{
vector <int> v;
for(int j=0; j<1000000; j++) v.push_back(j);
}
尽管创建了尺寸为1000000的向量,但循环后的内存是免费的。
如果我们这样做:
for(int i=0; i<10; i++)
{
vector <int> v;
for(int j=0; j<1000000; j++) v.push_back(j);
goto after_for;
}
after_for: ;
向量会保留在内存中还是被删除?
将被删除。该变量超出范围,因此被称为(释放的记忆),即使您以这种方式退出也可以保证:
:for(int i=0; i<10; i++)
{
vector <int> v;
for(int j=0; j<1000000; j++) v.push_back(j);
throw std::runtime_error("xyz") ;
}
它被删除,因为它不再在范围
相关文章:
- 将数组的地址分配给变量并删除
- 根据模板类型有条件地删除变量
- 我无法删除 wxApp 类的成员变量
- 使用 ostream 变量删除代码重复
- 如何一次删除"cmake -D"定义的所有变量?
- 如何删除作为C++联合的成员变量的字符串对象
- 从文件名变量中删除".txt"
- 如何删除可以是指针(模板)的变量?
- C :动态分配的变量未在clang中删除
- 从函数中删除动态内存分配,但无法访问变量
- 如果我不删除动态创建的变量会发生什么
- C :从双变量的分数部分中删除尾随零
- 您可以删除本地静态变量吗?
- 将删除运算符放置在何处以进行动态变量
- GNU 调试器无法从显示中删除变量?
- 如何使用C 中的BSTR删除变量
- C++const_cast不会删除变量的constness
- 我无法理解为什么从子类中删除变量后输出会发生变化
- Qt父级在子级关闭后删除变量
- 删除变量时出现奇怪错误