【问题标题】:Getting first and last element of list<string> giving me ILLEGAL INSTRUCTION error获取 list<string> 的第一个和最后一个元素给我 ILLEGAL INSTRUCTION 错误
【发布时间】:2012-11-30 09:01:42
【问题描述】:
list<string> logs;
GetLogs(logs);
string first=logs.front();
**string last=logs.back();**

此时我正在 GDB 中获得 progeam got SIGILL

我的 GetLogs() 函数定义是:

int GetLogs(list<string>& logs){
logs.push_back("Log.001");
logs.push_back("Log.002");
logs.push_back("Log.003");
return 0;
}

当程序出现此错误时,我可以看到值 优先 日志.001 最后 日志.003

我的代码有什么问题??

【问题讨论】:

  • 当你显示的代码是程序中唯一的东西(除了包括等)时,它会这样做吗?
  • 你能想出一个最小但完整的例子来展示这个问题,然后发布吗?
  • 它是一个造成问题的片段..它是一个非常大的代码。是否需要包含所有内容? stdlib 和 stdio 都在那里。
  • @NPE 请给我一点时间。我来了
  • 当您在GetLogs 中执行string last = logs.back() 作为最后一条语句时会发生什么?

标签: c++ list stl


【解决方案1】:

我得到了解决方案。抱歉,GDB 在错误的行上显示了 SIGILL 错误。 我收到错误是因为我们有一个日志机制,它使用像fprintf 这样的格式化输入。但是我给了%sstring,这导致了这个问题。非常感谢您的耐心等待

first.c_str()last.c_str() 解决了它。

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多