Я сделал ошибку дампа ядра с двумя кодами выше:
//test.cpp
int main()
{
int *p = new int;
*p = 100;
delete p;
delete p;
return 0;
}
//test2.cpp
int main()
{
int *p = new int;
*p = 100;
delete p;
*p = 111;
std::cout<<*p<<std::endl;
return 0;
}
Gdb сказал мне, что первый кусок кода был сброшен ядром из-за сигнала SIGABRT, тогда как второй кусок кодаядро сброшено из-за сигнала SIGSEGV.
Не могли бы вы сказать, в чем разница?