如果我在for中声明和对象,例如将它的地址分配给指针,当结束指针时,该指针是否指向无效的内存?就像它发生在使用您在该方法中声明的对象的方法的末尾
是的,而不仅仅是内部 - 在任何街区内.
例如:
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中做到这一点,你需要非常小心,不要泄漏所有这些分配.