Я получаю странную ошибку seg, которая, кажется, происходит откуда-то не в моей программе ... явно не так. Я называю «strcmp» на двух массивах ... Оба массива хранятся в структурах того же типа. Я получаю в одном с точечной нотации и один через разыменования с «->»:Ошибка сегментации: «... нет такого файла или каталога»
int name = strcmp(one.name, two->name);
Это компилируется нормально, но когда я запускаю его я получаю ошибку сегм. Я пробовал отслеживать его с помощью GDB, но когда я поставил контрольные точки непосредственно перед тем, где, по-моему, это должно произойти, это все равно. Я получаю:
Program received signal SIGSEGV, Segmentation fault.
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../strcmp.S
FML. Предложения? Благодаря!
Вы пытались выполнить обратную трассировку, когда она segfaults в gdb? –
Что такое значение 'one.name',' two' и 'two-> name' в точке вызова? – Mud
Вы столкнулись с ошибкой сегментации, а источник для 'strcmp' не существует в вашей среде. Когда система пытается найти его * после *, произошла ошибка seg. Источник не нужен, чтобы присутствовать, это стандартная функция библиотеки. Поэтому проблема заключается в том, что вы переписываете границы памяти в другом месте. Запуск вашей программы с помощью valgrind или инструмента анализа памяти должен дать точную информацию о том, где. –