编译、运行下列程序后。从输出结果发现没有调用 class Y 的析构函数,出现了内存泄漏。请尝试修改class X类的定义解决这个内存泄露问题。并提交定义class X类的代码。
class X类的定义如下:
class X{
public:
X() { p = new int[2]; cout << "X(). "; }
~X() { delete [] p; cout << "~X().\n"; }
private:
int* p;
};
#include <iostream>
using namespace std;
// 你提交的代码将嵌入到这里
class Y : public X
{
public:
Y( ) { q = new int[1023]; cout << "Y( ) "; }
~Y( ) { delete [] q; cout << "~Y(). "; }
private:
int* q;
};
int main()
{
int n;
cin>>n;
for (int i = 0; i < n; i++)
{
X* r = new Y;
delete r;
}
return 0;
}
从输出结果发现没有调用 class Y 的析构函数,出现了内存泄漏。
3
X(). Y( ) ~X().
X(). Y( ) ~X().
X(). Y( ) ~X().
输入样例:
3
输出样例:(输出显示调用了Y类的析构函数)
X(). Y( ) ~Y(). ~X(). X(). Y( ) ~Y(). ~X().
X(). Y( ) ~Y(). ~X().
你提交的代码:
class X{ public: X() { p = new int[2]; cout << "X(). "; } virtual ~X() { delete [] p; cout << "~X().\n"; } private: int* p; };