new_del.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 117 行
C
117 行
typedef unsigned size_t;
int se;
unsigned n = 5;
struct E {
};
struct EN {
void *operator new( size_t amt ) { return (void *) new char[amt+__LINE__]; }
void operator delete( void *p ) { se=__LINE__;delete p; }
};
struct C {
C(){se=__LINE__;}
};
struct CN {
void *operator new( size_t amt ) { return (void *) new char[amt+__LINE__]; }
void operator delete( void *p ) { se=__LINE__;delete p; }
CN(){se=__LINE__;}
};
struct D {
~D(){se=__LINE__;}
};
struct DN {
void *operator new( size_t amt ) { return (void *) new char[amt+__LINE__]; }
void operator delete( void *p ) { se=__LINE__;delete p; }
~DN(){se=__LINE__;}
};
struct CD {
CD(){se=__LINE__;}
~CD(){se=__LINE__;}
};
struct CDN {
void *operator new( size_t amt ) { return (void *) new char[amt+__LINE__]; }
void operator delete( void *p ) { se=__LINE__;delete p; }
CDN(){se=__LINE__;}
~CDN(){se=__LINE__;}
};
void dummy( void ) {se=__LINE__;}
void main( void )
{
E *e;
EN *en;
C *c;
CN *cn;
D *d;
DN *dn;
CD *cd;
CDN *cdn;
e = new E;
delete e;
e = new E[n];
delete [] e;
en = new EN;
delete en;
en = new EN[n];
delete [] en;
e = ::new E;
::delete e;
e = ::new E[n];
::delete [] e;
en = ::new EN;
::delete en;
en = ::new EN[n];
::delete [] en;
dummy();
c = new C;
delete c;
c = new C[n];
delete [] c;
cn = new CN;
delete cn;
cn = new CN[n];
delete [] cn;
c = ::new C;
::delete c;
c = ::new C[n];
::delete [] c;
cn = ::new CN;
::delete cn;
cn = ::new CN[n];
::delete [] cn;
dummy();
d = new D;
delete d;
d = new D[n];
delete [] d;
dn = new DN;
delete dn;
dn = new DN[n];
delete [] dn;
d = ::new D;
::delete d;
d = ::new D[n];
::delete [] d;
dn = ::new DN;
::delete dn;
dn = ::new DN[n];
::delete [] dn;
dummy();
cd = new CD;
delete cd;
cd = new CD[n];
delete [] cd;
cdn = new CDN;
delete cdn;
cdn = new CDN[n];
delete [] cdn;
cd = ::new CD;
::delete cd;
cd = ::new CD[n];
::delete [] cd;
cdn = ::new CDN;
::delete cdn;
cdn = ::new CDN[n];
::delete [] cdn;
dummy();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?