dtor27.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 71 行
C
71 行
#include "fail.h"
#include <string.h>
struct B {
void operator delete( void *pv, unsigned s );
void *operator new( unsigned s );
void operator delete []( void *pv, unsigned s );
void *operator new []( unsigned s );
virtual ~B();
};
void B::operator delete( void *pv, unsigned s )
{
char *pc = (char*) pv;
memset( pc, -__LINE__, s );
delete [] pc;
}
void *B::operator new( unsigned s )
{
return new char[s];
}
void B::operator delete []( void *pv, unsigned s )
{
char *pc = (char*) pv;
memset( pc, -__LINE__, s );
delete [] pc;
}
void *B::operator new []( unsigned s )
{
return new char[s];
}
virtual B::~B() {
}
unsigned dcount;
struct D : B {
~D();
};
D::~D() {
++dcount;
}
void test() {
B *p = new D[10];
delete [] p;
}
void zap() {
static void *p;
char buff[1000];
memset( buff, 0xdd, sizeof( buff ) );
p = buff;
}
int main() {
{
D a[10];
D x,y,z;
test();
zap();
}
if( dcount != 10+1+1+1+10 ) fail(__LINE__);
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?