有没有办法让急切地调用C++析构函数?

Nic*_*ens 0 c++ optimization destructor scope

我的C++代码中的一些函数具有使用大量堆内存的临时本地对象.因此,我希望它们在被我们完成后立即被破坏并释放他们的记忆.但是当变量名超出范围时,C++只调用析构函数.有没有办法让编译器在变量的活跃范围的末尾自动调用析构函数或另一个清理方法?

当然我可以手动新建/删除对象,但这很不方便且容易出错.同样不令人满意的是使用额外的大括号来明确限制范围.

编辑:从响应来判断,目前的C++功能似乎无法做到这一点.我会建议它用于下一个标准.

Jar*_*d42 5

您可以使用内部范围,但通常表示您可以使用子功能

void foo()
{

    // some stuff
    {
        BigData bigData;

        // some other stuff
    } // bigData is released now.

    // some other stuff
}
Run Code Online (Sandbox Code Playgroud)

这不处理交错变量.

  • @AndyG:OP无缘无故地构成了无意义的限制,更令人不满意. (5认同)
  • @NicolasCapens:想想`lock_guard`变量,它在定义后没有明确使用,但应该保留到范围结束. (2认同)