Попытка выбросить исключение вызывает segfault - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть этот кусок кода, который выдает исключение, когда верхний указатель равен нулю. Тем не менее, он входит в оператор if и сразу же вызывает ошибки. Я нигде не меняю значения этого указателя и по отладке знаю, что он входит в оператор.

std::string LinkedStack::pop() {
if (!top) {
    throw (std::out_of_range(""));
}
//...

Это часть уловки, я не могу отредактировать это, как это было предоставлено моим профессором для назначения.

 try {
    testStack.pop();
    std::cout << "FAIL: should have thrown exception from pop"<< std::endl;
}
catch(std::out_of_range& e){
    printAssertEquals("Can't pop from an empty stack", e.what());
}

Я использую Clion IDE и запускаю машину с Windows, если это вообще имеет значение. У меня такое чувство, что это может быть системной проблемой, поскольку все, с кем я разговаривал, не могли понять, в чем проблема. Спасибо!

РЕДАКТИРОВАТЬ: также это выходное сообщение, которое он печатает при сбое, хотя я вижу, что это segfault в отладчике:

прекращение вызова после выброса экземпляра 'std :: out_of_range' то, что ():

Процесс завершен с кодом выхода 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...