流产:核心倾销

时间:2014-04-08 01:10:32

标签: c++

我的结构如下:

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)

有人可以指导我这里发生了什么吗?

0 个答案:

没有答案