在linux下的程序运行中遇到内存申请的错误,但是内存申请new怎么会出错呢,经过仔细排查,其实是改写了已经销毁的对象的某个值,导致对应内存现在所占的其他对象被破坏导致的。
多线程操作某个对象,且有回调操作,一定要注意对象的生存期,要使用智能指针,否则很容易产生内存错误。
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7b2f2b5 in ?? () from /lib64/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.6.x86_64 libgcc-4.8.5-39.el7.x86_64 libstdc++-4.8.5-39.el7.x86_64
(gdb) bt
#0 0x00007ffff7b2f2b5 in ?? () from /lib64/libstdc++.so.6
#1 0x00007ffff7b91b63 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() () from /lib64/libstdc++.so.6
#2 0x00000000004009e8 in main () at crup.cc:23
linux平台处理segment fault的一般方法