6.3w+
社区成员
Derived *CreateDerived (void)
{
return malloc(sizeof(struct Derived));
}
void FreeDerived (Derived *pd)
{
if(pd==null)return;
if(pd->pb!=null)free(pd->pb);
free(pd);
}
#include <iostream>
using namespace std;
struct Base
{
int a;
int b;
int c;
};
struct Derived
{
int d;
int e;
int f;
Base *pb;
};
Derived *CreateDerived (void)
{
Derived* pD = (Derived*)malloc(sizeof(Derived));
if(pD)
{
pD->pb = (Base*)malloc(sizeof(Base));
return pD;
}
return NULL;
}
void FreeDerived (Derived *pd)
{
if(pd)
{
if(pd->pb)
{
free(pd->pb);
pd->pb = NULL;
}
free(pd);
pd = NULL;
}
}
int main(int argc, char* argv[])
{
Derived *p = CreateDerived();
p->pb->a = 10;
FreeDerived(p);
return 0;
}
使用malloc free
Derived * CreateDerived()
{
Derived *p = (Derived *)malloc( sizeof(Derived) );
p->pb = (Base*)malloc(sizeof(Base));
return p;
}
void FreeDerived(Derived *p)
{
free( p->pb);
free(p);
}
#include <iostream>
using namespace std;
struct Base
{
int a;
int b;
int c;
};
struct Derived
{
int d;
int e;
int f;
Base *pb;
};
Derived *CreateDerived (void)
{
Derived* pD = new Derived;
if(pD)
{
pD->pb = new Base;
return pD;
}
return NULL;
}
void FreeDerived (Derived *pd)
{
if(pd)
{
if(pd->pb)
{
delete pd->pb;
pd->pb = NULL;
}
delete pd;
pd = NULL;
}
}
int main(int argc, char* argv[])
{
Derived *p = CreateDerived();
p->pb->a = 10;
FreeDerived(p);
return 0;
}
Derived * CreateDerived()
{
Derived *p = new Derived;
p->pb = new Base;
return p;
}
void FreeDerived(Derived *p)
{
delete p->pb;
delete p;
}
#include <iostream>
using namespace std;
struct Base
{
int a;
int b;
int c;
};
struct Derived
{
int d;
int e;
int f;
Base *pb;
Derived(){
pb = new Base;
}
~Derived(){
delete pb;
}
};
int main(int argc, char* argv[])
{
Derived *p = new Derived();
p->pb->a = 10;
delete p;
return 0;
}