2013-02-22 54 views
0

我目前正在运行一个C++文件,它在运行时编译但崩溃。SIGSEV错误(gdb)

我打开调试程序并获得以下行,当我运行程序:

计划接收信号SIGSEGV,分割过错。 来自/lib/libc.so.1的strcat()中的0xff0ab210

我不知道这行代表什么意思。

你能解释一下吗?

编辑:

我已经得到了回应,告诉我我是如何在程序中使用的strcat。 所有我用它用于与atoi方法一起使用以将字符串转换为十六进制数。

编辑2: 我在使用strcat库的代码上看到了一些东西,它是.append函数。这是问题的原因吗?

回答

0

这是一个分段错误。通常这意味着你正试图访问尚未分配的内存。由于您使用的是strcat我猜测目标字符串尚未分配或没有分配足够的内存。

+0

以及如何在内存中分配此点? – 2013-02-22 01:32:39

+0

你可以发布具有strcat函数调用的行吗? – austin 2013-02-22 01:33:34

+0

我只是将它用于程序中某些方法所需的atoi方法。我是否让他们指点? – 2013-02-22 01:36:57

0

如果赛格故障来自strcat的,那么它很可能是以下情况之一发生:

  1. 你的来源是一个非空终止的C字符串(格式错误的字符串)。
  2. 目标字符串中分配的内存量不足以存储源和目标+ 1(最后为null)。

检查两个案例是否被覆盖,希望你不会再看到SIGSEGV。

+0

这两种情况究竟是什么意思? @Neil – 2013-02-22 01:40:50