Сегментация в объявлении строки - PullRequest
0 голосов
/ 06 апреля 2019

Я получаю ошибку сегментации при запуске моей программы, программа компилируется с помощью g ++ с использованием тега -g.Затем я использовал gdb для отладки программы:

извлечение исходного кода (clinicFunctions.cpp):

void loadTreatments(string &file, string treatments[20], int &treatmentsCount){

cout << "---LOADING TREATMENTS---" << endl;

ifstream reader(file.c_str());
int lineCounter = 1;



if(!reader){
    cerr << "**Error opening file: " << file << "**" << endl;
}

while (reader){
    string line;  //LINE 299, ERROR OCCURS HERE
    int stringLength;
    size_t location;
    char extraction[20];
    size_t length;

    string treatment;

    getline(reader, line);
    stringLength = line.length();
    location = line.find(".");

gdb result:

Program received signal SIGSEGV, Segmentation fault.
0x77923654 in ?? ()
(gdb) backtrace
#0  0x77923654 in ?? ()
#1  0x775e70b5 in msvcrt!free () from C:\windows\SysWOW64\msvcrt.dll
#2  0x00990000 in ?? ()
#3  0x6fe5a624 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#4  0x6fec971f in ?? () from C:\MinGW\bin\libstdc++-6.dll
#5  0x6fed6353 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#6  0x6fed63a1 in ?? () from C:\MinGW\bin\libstdc++-6.dll
#7  0x6feda29b in ?? () from C:\MinGW\bin\libstdc++-6.dll
#8  0x00402fb1 in _fu22___ZSt4cerr () at clinicFunctions.cpp:299
#9  0x00401643 in main (argc=5, argv=0x990ea0) at clinic.cpp:48

Эта ошибка возникает втретья петля while (reader)

...