C++中的std::list, std::array, std::queue, std::map, std::set, std::vector, std::forward_list, std::multiset, std::multimap, std::stack, std::unorderd_map, std::unorderd_multimap, std::unorderd_set, std::unorderd_multiset在任何成员方法中均不管理程序员动态分配的内存。
先附上解决方法:
vector<Data*> g_vec;
void release()
{
// 程序员自己管理 自己动态分配的内存
for_each(g_vec.begin(), g_vec.end(), [](Data*& iter) {delete iter; iter = nullptr; });
}
测试数据:
struct Data
{
explicit Data(const int val) noexcept :m_var(val)
{
cout<<"构造函数:"<<this->m_var<<endl;
}
Data(const Data& other) noexcept
{
cout<<"copy构造函数:"<<other.m_var<<endl;
this->m_var = other.m_var;
}
Data(Data&& other) noexcept
{
cout<<"move构造函数:"<<other.m_var<<endl;
this->m