Как устранить ошибку сегментации из-за strtok ()? - PullRequest
0 голосов
/ 07 декабря 2009

Я получаю ошибку сегментации при выполнении следующей строки:

result = strtok(data,delimiter);

Я дал обратный след:

Program received signal SIGSEGV, Segmentation fault.
0x44359e85 in strtok () from /lib/libc.so.6
(gdb) backtrace
#0  0x44359e85 in strtok () from /lib/libc.so.6
#1  0x08048c02 in main () at multiply.c:36

Как решить эту проблему?

1 Ответ

2 голосов
/ 07 декабря 2009

Существует несколько разумных возможностей для ошибки сегментации:

  • Передача NULL в качестве данных при первом вызове strtok().
  • Передача NULL в качестве разделителя.
  • Использование в качестве данных строки только для чтения, что запрещено, поскольку strtok() изменяет исходную строку.

Я вижу, вы знаете, как использовать GDB, поэтому поставьте точку останова перед вызовом strtok() и посмотрите, какие значения передаются в функцию.

Вы также можете использовать valgrind . Это поможет вам найти конкретную проблему, которая у вас есть.

Но, если вы хотите получить лучшие ответы при переполнении стека, вы должны дать еще немного кода и другую информацию.

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