1
我想删除一个已经删除的对象,我得到一个SIGABRT信号。 我知道这个信号中止我的程序,但我想在信号处理程序中捕获此信号,并显示消息,我正在删除一个已删除的对象...如何编写sigabrt信号的信号处理程序?
这是我试过的代码,但它doesn似乎没有用。 请帮我弄清楚它有什么问题吗?
using namespace std;
class myclass
{
public:
myclass() { cout <<"myclass constructed\n"; }
~myclass() { cout <<"myclass destroyed\n"; }
};
void func(int);
int main (void)
{
signal(SIGABRT,func);
myclass * pt;
pt = new myclass[3];
delete[] pt;
delete[] pt;
return 0;
}
void func(int)
{
signal(SIGABRT,func);
cout << "trying to delete unallocated memory, exiting....\n";
exit(0);
}
你是什么意思“似乎没有工作”? (在这里工作正常,请尝试格式化你的代码) – Mat 2011-12-31 20:14:00
它只是中止没有给我的味精“试图删除未分配的内存,退出......” – haris 2011-12-31 20:15:55
我看到消息打印罚款(克++ 4.6.1/ubuntu 11 x86)如果这是你如何定义“作品”。 – hmjd 2011-12-31 20:17:37