except42.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 40 行
C
40 行
#include "fail.h"
static int zz;
struct T : _CD {
T();
~T();
};
T::T(){++zz;}
T::~T(){--zz;}
struct A : _CD {
A();
~A();
};
A::A(){++zz;}
A::~A(){--zz;}
short foo( A *a, int b) {
T v1;
if( b == 1 ) {
return 1;
}
delete a;
return 0;
}
int main() {
A *p = new A();
if( foo( p, 1 ) != 1 ) _fail;
// no delete should have happened
if( zz != 1 ) _fail;
if( foo( p, 0 ) != 0 ) _fail;
// delete should have happened
if( zz != 0 ) _fail;
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?