2012-12-29 2 views
1

У меня есть интересная ошибка сегментации. Это происходит в неизвестном месте моего кода. Код довольно прост, два объекта и одна общая функция. Предполагается, что функция создаст график объектов. Когда я запускаю код только с основным вызовом функции, я получаю ошибку seg и следующую строку кода в GDB.Как определить Seg Fault?

Программный сигнал SIGSEGV, ошибка сегментации. 0x00007ffff758a02c в свободном() от /lib/x86_64-linux-gnu/libc.so.6

Когда я добавить строку в основной вправо до вызова функции, что просто соиЬ < < «Проверка»; Я все еще получаю ошибку сегментации, но проверка не появляется на выходе. Действительно потерял здесь. Что мне делать дальше?

EDIT:

Спасибо за помощь с помощью флеш. Я нашел область в коде, вызывающую ошибку seg. Функции, которые я использую, новы для меня, хотя я все еще немного потерян. Кто-нибудь видит ошибку?

const char* inFile = inFileP.c_str(); 
list<CContinent> world; 
CCountry *homeCountry = new CCountry; 
CCountry *neighborCountry = new CCountry; 

fstream filestr; 
filestr.open(inFile, fstream::in | fstream::out | fstream::app); 
string line; 
+1

Нам нужен код для работы, seg ошибки могут произойти по ряду причин –

+1

Отладчик? Backtrace? –

+2

вырезать код, пока у вас не будет ~ 20 строк. Отправьте их сюда. –

ответ

0

Из-за мучительного опыта, когда авария происходит в malloc или освобождается из-за кучи. Любой из обычных подозреваемых может вызвать повреждение кучи - выделить 10 байт, написать 11 - бесплатно, а затем записать в свободную память, двойной свободный, et.al.

0

Valgrind - полезный инструмент для отладки программы. В первом представлении я не вижу инициализацию для мировой переменной.