【问题标题】:using string to read file - Xcode使用字符串读取文件 - Xcode
【发布时间】:2011-02-11 22:28:09
【问题描述】:

当我在调试器中运行时,以下内容不起作用并给了我一个 SIGABRT:


std::ifstream inFile;

inFile.open("/Users/fernandonewyork/inputText.txt");    

cout << inFile << endl;

vector<string> inText;

if (inFile) {
    string s4;

    while (inFile>>s4) {
        inText.push_back(s4);
    }

}
inFile.close();

以下内容:


std::ifstream inFile;

inFile.open("/Users/fernandonewyork/inputText.txt");    

cout << inFile << endl;

vector<string> inText;

if (inFile) {
    string s4("This is no lnger an empty string");

    while (inFile>>s4) {
        inText.push_back(s4);
    }

}
inFile.close();

我的印象是我可以简单地使用 s4 而不必担心任何空间问题,或者这里发生了什么其他事情?这是我从顶部代码中得到的完整错误:

malloc: * 对象 0x100010a20 的错误:未分配被释放的指针 * 在 malloc_error_break 中设置断点进行调试 程序接收信号:“SIGABRT”。

【问题讨论】:

  • 你试过设置s4为null来分配空间吗?
  • 这就是全部代码吗?问题似乎没有在这里发生,这部分看起来还可以。此外,您不需要初始化s4

标签: c++ xcode macos


【解决方案1】:

an earlier question 涵盖了这个令人震惊的错误:

解决方案:

设置

_GLIBCXX_FULLY_DYNAMIC_STRING=1

在目标中的预处理器宏中 信息构建选项卡。

还有一个带有预处理器宏字段(项目设置?)的设置窗口,但设置它不会有任何效果。

— 嗯,这个问题和这个问题有很大不同,但讽刺的是你的症状更常见。

【讨论】:

  • 应用上述设置 (_GLIBCXX_FULLY_DYNAMIC_STRING=1) 解决了该问题。这两个版本的代码现在都可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2012-01-20
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
  • 2021-09-22
相关资源
最近更新 更多