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
我在程序执行后和“return 0;”后遇到这个错误已被执行。
我使用了来自 STL 的 vector 。仅当输入文件非常大时才会抛出此错误(我在图中有大约 10000 个节点)
此外,我无法将输出写入文件。目前我已经评论了那部分。
请帮我解决问题。 我正在使用 Ubuntu 12.10 64 位。
最佳答案
从 main
返回后的错误可能由(至少)引起:
- 狡猾的
atexit
处理程序;或 - 某些描述的内存损坏。
在这两者中,它更有可能是后者,因此您应该在动态内存使用分析工具下运行您的代码,例如 valgrind
。您对导致问题的大 vector 的描述似乎也支持这一论点。
关于c++ - 程序在返回 0 后收到 SIGSEGV 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131832/