如果我在for中声明一个对象,那之后是否会释放内存?

Xai*_*anX 3 c++

如果我在for中声明和对象,例如将它的地址分配给指针,当结束指针时,该指针是否指向无效的内存?就像它发生在使用您在该方法中声明的对象的方法的末尾

Mat*_*Mat 7

是的,而不仅仅是内部 - 在任何街区内.

例如:

 void bar()
 {
   foo* p;
   {
     foo f;
     p = &f;
   }
   // p no longer points to a valid object, f has ended its lifetime
Run Code Online (Sandbox Code Playgroud)

同样的事情,for除了每次循环运行时都会创建/销毁对象.

现在,如果相反,你有:

 void bar()
 {
   foo* p;
   {
     foo* f = new foo;
     p = f;
   }
   // p is still valid here, you need to clean up yourself with delete
Run Code Online (Sandbox Code Playgroud)

如果你在for中做到这一点,你需要非常小心,不要泄漏所有这些分配.