我有一个简单的问题,希望能得到解答——当异常发生时,如何释放在try块中分配的内存?请考虑以下代码:
try
{
char *heap = new char [50];
//let exception occur here
delete[] heap;
}
catch (...)
{
cout << "Error, leaving function now";
//delete[] heap; doesn't work of course, heap is unknown to compiler
return 1;
}
在堆分配内存后,如果在调用delete[] heap
之前发生异常,我该如何释放内存?是否有规则不要在这些try .. catch块中分配堆内存?