我正在使用一个返回const std::vector的库api。下面是代码

const std::vector<unsigned char> myvar = getData();

现在我已经为myvar清理了内存。如何使用C++做到这一点。

我正在尝试类似的东西
std::for_each(myvar.begin(), myvar.end(), [&](unsigned char mychar)
{
    cout<<mychar<<",";


    delete &mychar;

});

但是由于堆崩溃而失败。

感谢您的输入。

最佳答案

STL使用RAII idiom,,它在必要时分配内存并自动取消分配。

您不需要手动取消分配myvar,只需让myvar超出范围,所有内存将自动取消分配。

// new scope, maybe function, maybe if/while scope:
{
    const std::vector<unsigned char> myvar = getData();
}
// myvar will be deallocated

注意,始终成对调用new/deletenew [] / delete[],您没有为任何myvar成员调用new,根本不需要调用delete

关于c++ - 如何为const std::vector <unsigned char>释放内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14682547/

10-13 05:55