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)
但失败了堆破坏.
感谢您的投入.
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.
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |