如何为const std :: vector <unsigned char>释放内存

Nib*_*bha 2 c++ memory-management vector

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

const std::vector<unsigned char> myvar = getData();
Run Code Online (Sandbox Code Playgroud)

现在我有myvar的清理记忆.如何用c ++做到这一点.

我正在尝试类似的东西

std::for_each(myvar.begin(), myvar.end(), [&](unsigned char mychar)
{
    cout<<mychar<<",";


    delete &mychar;

});
Run Code Online (Sandbox Code Playgroud)

但失败了堆破坏.

感谢您的投入.

bil*_*llz 5

STL使用RAII惯用语,它在必要时分配内存并自动解除分配.

您不需要手动取消涂层myvar,只是放开myvar范围,所有内存都将自动解除分配.

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

注意,总是打电话new/delete,new [] / delete[]成对,你没有为任何myvar会员打电话,你根本不需要打电话delete.