我的结构如下:
struct reply_t {
reply_t (unsigned int _xid){
xid = _xid;
cb_present = false;
buf = NULL;
sz = 0;
}
unsigned int xid;
bool cb_present; // whether the reply buffer is valid
char *buf; // the reply buffer
int sz; // the size of reply buffer
};
我有一个std :: map给出如下:
std::map<unsigned int, std::list<reply_t> > reply_window_;
现在这是有问题的部分:
std::map<unsigned int, std::list<reply_t> > :: iterator rep_window;
std::list<reply_t> rep_list;
std::list<reply_t> :: iterator rep_it;
rep_window = reply_window_.find(clt_nonce);
if(rep_window!=reply_window_.end()){
for(rep_it=rep_window->second.begin(); \\
rep_it!=rep_window->second.end();rep_it++){
if((*rep_it).xid<=xid_rep){
(*rep_it).cb_present = false;
free((*rep_it).buf);
}
}
}
在上面的代码中,我只想释放分配给列表迭代器指向的 struct reply_t 的 * buf 的内存。我不是要释放分配给列表迭代器指向的结构 struct reply_t 的内存。但是,当我运行代码时,它会给出以下错误:
Aborted (core dumped)
有人可以指导我这里发生了什么吗?