在哪里分配一次使用类?

use*_*940 0 c++ memory-management

让我们考虑以下代码:

void main(int argc, char* argv[])
{
Foo foo;
//at this point I don't need foo any more
//a lot of stuff here
}
Run Code Online (Sandbox Code Playgroud)

如果我只需要foo很短的时间,那么在执行其余代码之前将它分配到堆上并删除是不是更好?

joh*_*ohn 11

不,最好写一个内部范围.

int main()
{
    {
        Foo foo;
        // use foo
    }
    // more code
}
Run Code Online (Sandbox Code Playgroud)

但这样做应该是一个暗示,将foo放在一个完全独立的函数中可能会更好.

这里没有理由使用堆分配.那个解决方案会比问题更糟糕.