c程序中的内存错误
我已经做了一个程序,我在其中处理文件,但我得到了这个错误 (我已经通过c程序中的内存错误,c,linux,gcc,C,Linux,Gcc,我已经做了一个程序,我在其中处理文件,但我得到了这个错误 (我已经通过gdb运行了它) 程序接收信号SIGSEGV,分段故障。 来自/lib/tls/i686/cmov/libc.so.6的vfprintf()中的0x0016e50b 我没有得到包含错误的确切行 有人能告诉我吗 这个错误意味着什么 发生这种情况有什么特殊原因吗 或者是由于多种原因导致的一般性错误 这个错误意味着什么 它基本上意味着你正在访问你不应该访问的内存 发生这种情况有什么特殊原因吗 分割冲突的发生有很多原因。但是,由于
gdb
运行了它)
程序接收信号SIGSEGV,分段故障。
来自/lib/tls/i686/cmov/libc.so.6的vfprintf()中的0x0016e50b
我没有得到包含错误的确切行
有人能告诉我吗
- 这个错误意味着什么
- 发生这种情况有什么特殊原因吗
- 或者是由于多种原因导致的一般性错误
vfprintf
中,因此可能仅限于以下内容:
- 无效的文件指针
- 没有为格式字符串传递足够的参数
- 为C字符串传递空指针
- 为C字符串传递以非null结尾的指针
- 来自程序完全不同部分的内存损坏
printf
调用之前,请检查所有参数(当然,不要使用printf
,请使用一些更健壮的调试代码,例如打印字符串的每个字符,并在每个字符之后刷新和fsyncing)。并检查文件句柄是否有效,以及传递给vprintf
的参数数量是否与格式字符串中指定的参数数量匹配
这个错误意味着什么
它基本上意味着你正在访问你不应该访问的内存
发生这种情况有什么特殊原因吗
分割冲突的发生有很多原因。但是,由于它发生在vfprintf
中,因此可能仅限于以下内容:
- 无效的文件指针
- 没有为格式字符串传递足够的参数
- 为C字符串传递空指针
- 为C字符串传递以非null结尾的指针
- 来自程序完全不同部分的内存损坏
在调用
printf
调用之前,请检查所有参数(当然,不要使用printf
,请使用一些更健壮的调试代码,例如打印字符串的每个字符,并在每个字符之后刷新和fsyncing)。并检查文件句柄是否有效,以及传递给vprintf
的参数数量是否与格式字符串中指定的参数数量匹配。是否有代码?如果不在gdb中显示代码,那么调试时会发生什么情况?键入bt
获取回溯。您将获得有关代码失败位置的更多信息。张贴回溯以及代码的相关部分。可能是您的程序试图访问禁止的内存位置。检查所有数组或指针中是否存在内存泄漏。另外,提供代码以便我们可以查看。有一些代码吗?如果不在gdb中显示代码,那么调试时会发生什么情况?键入bt
获取回溯。您将获得有关代码失败位置的更多信息。张贴回溯以及代码的相关部分。可能是您的程序试图访问禁止的内存位置。检查所有数组或指针中是否存在内存泄漏。此外,请提供代码以便我们进行调查。使用valgrind确定实际问题,包括受影响的代码行(如果二进制文件中存在调试信息)。使用valgrind确定实际问题,包括受影响的代码行(如果二进制文件中存在调试信息)。