关于C++指针和内存管理的问题
class A
{
public:
int a = 1;
};
class B : public A
{
public:
int b = 2;
};
B* bi = new B;
A* ai = (A*)bi;
delete ai;
请问这样处理会不会有内存未释放的问题
class A
{
public:
int a = 1;
};
class B : public A
{
public:
int b = 2;
};
B* bi = new B;
A* ai = (A*)bi;
delete ai;
请问这样处理会不会有内存未释放的问题
不会,你在类内没有任何申请堆内存的地方, delete本质还是编译器生成的operator delete,如果你在子类里面有new 的操作,并且没有虚析构函数,才会造成内存泄露