分段错误 - 大小为 8 的无效读取

Posted

技术标签:

【中文标题】分段错误 - 大小为 8 的无效读取【英文标题】:Segmentation Fault - Invalid read of size 8 【发布时间】:2012-01-29 21:51:44 【问题描述】:

由于某种原因,以下 C++ 代码会导致分段错误:

#include <sstream>
#include <vector>

using namespace std;

string charToString(char c)

    stringstream ss;
    string s;
    ss << c;
    ss >> s;

    return s;


int main()

    vector<string> stringTable;

    for(int c = 0; c < 256; ++c)
        string s = charToString(c);
        stringTable[c] = s;
    

valgrind在线报错Invalid read of size 8

stringTable[c] = s;

但我看不出这条线有什么问题。那么这段代码有什么问题呢?

【问题讨论】:

你的向量是空的。你可以使用 push_back() 来填充它。 【参考方案1】:

您正在注销vector 的末尾。给vector一个初始大小

vector<string> stringTable(256);

【讨论】:

以上是关于分段错误 - 大小为 8 的无效读取的主要内容,如果未能解决你的问题,请参考以下文章

大小为 8 的无效读取 - Valgrind + C

由于无效写入导致的分段错误

总线错误与分段错误

从文本文件中读取行时出现字符串分段错误

分段错误,不确定来源

从堆栈读取时出现分段错误