【发布时间】:2011-11-28 03:05:05
【问题描述】:
我在 try-catch 情况下遇到了一点问题,代码如下(非常简单):
struct Something
{
int A, B, C;
Something()
{
A = B = C = 0;
}
~Something()
{
cout << "Destructor " << endl;
}
};
int main()
{
Something * s = new Something;
//Something * s = new Something[5];
try
{
delete[] s;
}
catch(exception& e)
{
delete s;
}
return 0;
}
我打算先尝试将指针作为数组删除,如果失败,进行简单的删除。
所以,当我第一次尝试使用“Something”数组时(如注释行中所示),它运行良好。但是当我现在尝试它时,我得到了一个可怕的错误。
有什么想法吗?
【问题讨论】:
-
为什么要先将其作为数组删除?这可能会导致未定义的行为。
-
换个顺序有用吗?
-
不,它只会导致同样的问题。你试图做的是一个坏主意。
标签: c++ exception-handling try-catch delete-operator