【问题标题】:Segmentation Fault 11 while trying to run compiled C++ code尝试运行已编译的 C++ 代码时出现分段错误 11
【发布时间】:2019-03-11 17:34:08
【问题描述】:

我正在为 uni 做一个作业 (.csv-parser)。在编译后尝试运行代码时,它会返回 SegFault 11。

这是我的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>

int main (int argc, char** argv) {

string line;
string buffer;

vector<vector<string> > database;
vector<string> dataset;

//bool start = true;

ifstream denkmaeler;
denkmaeler.open(argv[1]);
ifstream denkmal;
denkmal.open(argv[1]);

int semic = 1;
//int semic2 = 1;
int zaehler = 0;

if (denkmal.is_open()){
    (getline(denkmal, buffer));

    for (int i = 0; i < buffer.length(); i++ ){
        if(buffer[i] == ';'){
            semic++;}

    }
}

denkmal.close();

if(denkmaeler.is_open()) {
    //if (counter < 1) {
    while (getline(denkmaeler, buffer));
    if (line.back() == *argv[2]) {
        line += argv[2];
        stringstream ss(line);
        while (getline(ss, line, *argv[2])) {
            dataset.push_back(line);
            database.push_back(dataset);
            dataset.clear();

        }
    }


}

for (int x=0, y=semic; x < semic; y=database.size(), x++, y++){
    if (x > semic){
        x=0;
        cout << '\n' << "-------------------------------" << '\n' << endl;

    }
    if (database[y][0].length() == 0){
        database[y][0] = "not available";
    }

    cout << database[x][0] << " : "  << database[y][0] << endl;
}
}

如果有人能够指出我的错误,我将非常感激。我读了一些帖子指出问题可能是一个数组,但我不确定这是怎么回事。

【问题讨论】:

  • 是在编译期间还是在执行期间出现段错误?如果是前者,那么你的编译器有问题。
  • 如果您的编译器崩溃,请务必准确分享您正在使用的编译器、正在使用的版本以及正在使用的编译标志。
  • 正在编译,但在Windows 10下也无法编译。使用Xcode自带的GCC。
  • @FrançoisAndrieux 仅使用 -o 来命名可执行文件。
  • 最明显的错误是您在包含之后缺少using namespace std;,因为您尝试使用未修饰的string 等。如果不是这样,你能告诉我们你在 Windows 上遇到的错误吗?如果 GCC 因无效代码而崩溃,则该错误比在有效代码上崩溃更严重。 (如果是 XCode 工具,我认为它实际上可能是 LLVM 而不是 GCC。)

标签: c++ compiler-errors segmentation-fault


【解决方案1】:

对于分段错误,最好使用调试工具,它可以准确地显示错误在哪里(哪一行)!

我用的是gdb,建议你google一下

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多