void func(void) { try { int *a = new int [10]; int *b = new int[1000000000]; delete []a; } catch { ... } }
b 分配失败会不会导致 a 无法释放?
会。
那怎么写才能正确处理?
@yajunw: 用 SEH 异常处理机制。
int *a = NULL;
int *b = NULL:
__try
{
a = new int[10];
b = new int[10000000000000];}
__finally
if(a != NULL)
delete a;
a = NULL; }}