我的程序在 main() 函数之前崩溃。我使用“cerr”确定这一点:
int main(int argc, char **argv)
{
cerr << " MAAIN " << endl;
来自 gdb 的消息:
Reading symbols for shared libraries ...........+++............................ done
CA(34652) malloc: *** error for object 0x7fff76694860: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Program received signal SIGABRT, Aborted.
0x00007fff88e1782a in __kill ()
(gdb) bt
#0 0x00007fff88e1782a in __kill ()
#1 0x00007fff8c4d2a9c in abort ()
#2 0x00007fff8c53184c in free ()
#3 0x00000001026a1db0 in std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow ()
(gdb)
我已经检查了“删除”和“免费”功能的代码。所有删除都通过这样的检查完成:
if (x) delete x;
请帮我回答两个问题: 1. 可能的问题是什么?2. 怎么找?(我有一个包含很多文件的大代码和用于编译的 cmake)。
PS 我读过C/C++ 程序有什么方法可以在 main() 之前崩溃吗? 但看着 gdb 按摩我想图书馆还可以。