1 为了维持运行速度,编译器可以在编译时期建立起用于的数据结构.但编译器可以忽略这些结构直到异常
2 为了维护程序大小,编译器可以在执行期建立起用于的数据结构, 但编译器只有在必要的时候才建立数据结构.
异常可以不程序划分为多个区域: try block 以外 和try block以内以及整个区域.
void mumble ( void * arena )
{
point *p = new point ;
try
{
smlock ( arena );
}
catch (…)
{
smunlock ( arena );
delete p;
throw ;
}
smunlock (arena);