小编Nem*_*emo的帖子

在STL容器中释放内存

我有一个对象列表:

struct reply_t {
    unsigned int xid;
    char *buf;     
};

std::list<reply_t> > replies;
Run Code Online (Sandbox Code Playgroud)

我想删除该列表中的一些元素(这些元素xid <= confirmed_id).我喜欢简明扼要std :: remove_if.

remove_if(replies.begin(), replies.end(), 
   [&confirmed_id](const reply_t &arg) { return arg.xid <= confirmed_id; }); 
Run Code Online (Sandbox Code Playgroud)

问题是这不会释放bufs(在其他地方分配).有没有一种优雅的方式来处理这个?它是否像在对象析构函数中添加free(buf)一样简单?

c++ lambda iterator memory-management

0
推荐指数
1
解决办法
120
查看次数

标签 统计

c++ ×1

iterator ×1

lambda ×1

memory-management ×1