小编Rod*_*ick的帖子

列出迭代器不能解除引用?

使用以下代码时出现错误"list iterator not dereferencable":

bool done = false;
while (!_list_of_messages.empty() && !done) {
    // request the next message to create a frame
    // DEBUG ERROR WHEN NEXT LINE IS EXECUTED:
    Counted_message_reader reader = *(_list_of_messages.begin());
    if (reader.has_more_data()) {
        _list_of_frames.push_back(new Dlp_data_frame(reader, _send_compressed_frames));
        done = true;
    } else {
        _list_of_messages.pop_front();
    }
}
Run Code Online (Sandbox Code Playgroud)

(以"Counted_message_reader ..."开头的行是给出问题的那一行)

请注意,错误并不总是发生,但似乎是随机时间(通常在有大量缓冲数据时).

_list_of_messages 声明如下:

std::list<Counted_message_reader> _list_of_messages;
Run Code Online (Sandbox Code Playgroud)

在周围的代码,我们可以做的pop_front,push_frontsize,emptyend在检查_list_of_messages,但没有erase电话.

我研究过STL文档,看不出任何明显的问题.上面的代码有什么问题,或者我在某处有内存泄漏?

谢谢!不胜感激!

c++ iterator stl visual-studio-2005

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

c++ ×1

iterator ×1

stl ×1

visual-studio-2005 ×1