程序在返回0后收到SIGSEGV错误

时间:2012-10-30 01:02:10

标签: c++

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7b8bc26 in std::basic_filebuf<char, std::char_traits<char> >::_M_terminate_output() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) where
#0  0x00007ffff7b8bc26 in std::basic_filebuf<char, std::char_traits<char>    >::_M_terminate_output() ()
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00007ffff7b8c6a2 in std::basic_filebuf<char, std::char_traits<char>>::close()       ()  from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007ffff7b8cb2a in std::basic_ofstream<char, std::char_traits<char> >::~basic_ofstream() ()
from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x0000000000403e02 in main (argc=2, argv=0x7fffffffe1c8)
at main.cpp:630

我在程序执行后和“返回0”之后遇到此错误已被执行。

我使用过STL的载体。仅当输入文件大小非常高(我在图中有大约10000个节点)时才会抛出此错误

另外,我无法将输出写入文件。目前我评论过那部分内容。

请帮我解决问题。 我正在使用Ubuntu 12.10 64位。

1 个答案:

答案 0 :(得分:1)

main返回后的错误可能由(至少):

引起
  • 狡猾的atexit处理程序;或
  • 某些描述的内存损坏。

在这两者中,更有可能是后者,因此您应该在动态内存使用分析工具(如valgrind)下运行代码。您对导致问题的大型载体的描述似乎也支持这种争论。