我正在使用一个返回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/delete
,new [] / delete[]
,您没有为任何myvar
成员调用new,根本不需要调用delete
。关于c++ - 如何为const std::vector <unsigned char>释放内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14682547/