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