静态分析和c/c++程序
静态分析是软件测试技术的一种.c/c++ java是目前最流行的语言。
1,带参数的new
在指定地址的已有内存区上构造对象。使用带参数的new。它们常常在静态分析的时候造成内存泄漏的假象。
#include "stdafx.h"
#include "string.h"
class xq
{
public:
xq()
{
members=0x1010101;
printf("constructor of xq\n");
};
int members;
~xq()
{
printf("destructor of xq\n");
members=0;
}
static xq* appoint(void *);
void *operator new(unsigned int size, void *p) { return p; }
void operator delete(void *p1,void* p2){}
void operator delete(void *p){::operator delete(p);}
};
xq* xq::appoint(void *p)
{
return new(p) xq;
}
int main(int argc, char* argv[])
{
char buff[sizeof(xq)];
memset(buff,0,sizeof(xq));
xq *p=xq::appoint(buff);
for(int i=0;i<sizeof(buff);i++)
printf("buff[%d] is %d\n",i,buff[i]);
p->~xq();
for(i=0;i<sizeof(buff);i++)
printf("buff[%d] is %d\n",i,buff[i]);
return 0;
}