如何解决由strtok()引起的分段错误?

时间:2009-12-07 07:12:30

标签: c

执行以下行时,我遇到了分段错误:

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 个答案:

答案 0 :(得分:2)

您遇到的分段错误几乎没有合理的可能性:

  • NULL的第一次通话中将strtok()作为数据传递。
  • NULL作为分隔符传递。
  • 使用只读字符串作为禁止的数据,因为strtok()修改了源字符串。

我知道你知道如何使用gdb,所以在调用strtok()之前设置一个断点,看看传递给函数的值是什么。

您也可以使用 valgrind 。它将帮助您找到您遇到的具体问题。

但是,如果你想在堆栈溢出中得到更好的答案,你必须提供更多代码和其他iformation。