С ++ функция вылетает при вызове (конструктор класса) - PullRequest
0 голосов
/ 21 марта 2012

[изменено] У меня была очень странная ошибка. Мой отладчик имел сбой, когда он вызывает функцию, которая использует std :: string. Я думал, что это ошибка в моем коде, и сначала я не понял, что это должно что-то делать с std :: strings. Во всяком случае, теперь я знаю, что это связано с KDevelop, потому что, если я скомпилирую этот небольшой тестовый файл:

#include <iostream>
#include <vector>
#include <string>

int main(int argc, char **argv) {
    std::cout << "Hello, world!" << std::endl;

    std::string test = "test test";
    std::cout << test;
    return 0;
}

Он печатает «тестовый тест», но когда я пытаюсь его отладить, он также вылетает при вызове main (). В любом случае, я могу отладить свой проект с помощью nemivar, который также использует GDB в качестве бэкэнда, без ошибок.

Так что это больше не проблема для меня, и это можно удалить.

1 Ответ

1 голос
/ 21 марта 2012

В вашей функции search_str_in_vector() вы разыменовываете итератор end(), который не разрешен и приводит к неопределенному поведению. Ваш цикл for также на один элемент больше, чем вектор (вместо этого начинайте с vector.size()-1).

...