在vector上迭代时使用return语句退出循环是否安全?
is it safe to quit a loop with a return statement while iterating over a vector?
我对以下示例中内存管理的方式感到不自在:
void X::foo(void) {
// test1 :
for (auto i = this->vec.begin(); i != this->vec.end(); ++i) {
if ( ... ) {
return;
}
}
// test2
...
// test3
...
}
即使没有为迭代器分配内存,我也希望确保突然停止这种循环没有问题。打破循环,检查测试结果,然后不通过test2和test3退出函数是否更安全?
只要您将任何可能分配的资源返回给系统,这是安全的。如果你使用的是c++语言,并且正在使用能够正确实现RAII思想的结构,例如shared_ptr
等。那就没有问题了。
返回实质上"立即"离开函数调用。但是,在此之前,编译器确保首先销毁所有临时对象。
在for中声明的变量是在"自动内存"中分配的,这意味着它们将存在于变量作用域中:"i"将在超出作用域时自动释放。
所以,是的,从循环中返回" sudden "是安全的。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- Insert函数不适用于2 if语句C++
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 当if语句告诉程序返回0时,我的程序不会退出
- 如何退出 for 循环内的嵌套 if-else 语句?(C/C++)
- 试图调节我的 do-while 以停止在终端中退出程序.菜单不会根据需要循环使用当前语句
- 退出代码 -1073741510 在 bool if 语句处
- 中断语句未退出循环
- 如何在 C++ 中继续该函数而不退出 after else 语句
- 如何在 "if" 和 "while" 语句中只允许 3 个值以允许循环退出
- 中断语句不会退出循环
- 语句内分配"if"内存,退出时解除分配
- 在vector上迭代时使用return语句退出循环是否安全?
- 我的 switch 语句没有干净地退出循环
- c++中带有返回语句的退出函数