这几种内存释放方式,正确与否,能不能完全释放内存?
一:
class A;
class B : public A
//假设类B比类A要大,则:
A* pA = new B;
delete pA;
二:
class A;
void* p = new A;
delete p;
三:
struct s
{
int i;
int j;
};
LPBYTE pData = new BYTE[100];
struct s* ps = (struct s*) pData;
delete ps;
四:
class A
{
void Release(){delete this;}
};
class B : public A
{
int i;
};
B* pb = new B;
pb->Release();
最近我进了一家人数达到六七百人的大公司,我看了一下他们的代码,
上面是我看到的3种内存释放方式,我对程序的正确性表示怀疑!
还有,他们居然用__stdcall来修改可变参数的函数!可是奇怪的是,编译没有问题,运行也没有问题,可能对这个问题,我自己也不懂!
或者,这个函数根本没有执行到。