Ошибка сегментации C ++ в функции std :: string

Я разрабатываю алгоритм, основанный на запросах Skyline, используя C ++, используя RTree для хранения моих данных. Алгоритм работает нормально, если я обрабатываю до 5 баллов, тогда, если я пробую 6 баллов, он дает ошибку сегментации.
Используя GDB, я обнаружил, что проблема здесь:

Program received signal SIGSEGV, Segmentation fault.
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (
this=0x7fffffffd7c0, __str=
<error reading variable: Cannot access memory at address 0xffffffffffffffe8>)
at /usr/src/debug/gcc-4.7.2-20120921/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/include/bits/basic_string.tcc:175
175           __str.get_allocator())

Кто-нибудь может помочь мне понять, где ошибка или ар

0

Решение

Митч Уит уже предложил это в комментарии, но я думаю, что это действительно лучший ответ для вашей проблемы, поэтому:

Используйте valgrind.

Valgrind — это инструмент (или, скорее, набор инструментов), для которого режим работы по умолчанию — запуск вашей программы и проверка ошибок памяти, таких как утечки, переполнения буфера, неинициализированные чтения и многое другое.

Буквально все, что вам нужно сделать, это создать свою программу, желательно с -g возможность облегчить отладку, а затем запустить его как valgrind my-prog args..., Valgrind будет распечатывать подробные отчеты об ошибках со следами стека, когда происходит что-то плохое. Ваша проблема здесь, вероятно, будет найдена без необходимости использовать обычный отладчик, и при этом мы не будем угадывать проблему (если бы это была моя собственная проблема, я бы тоже использовал valgrind).

1

Другие решения

Учитывая только это, я думаю, что вы пытаетесь создать строку, используя недопустимые исходные данные, возможно, указатель на символ, который унифицирован или указывает на строку, которая уже была освобождена

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector