首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序段: #include<iostream> using namespace std; class base { public: base(int cnt) { resource=new int[ent]; } ~base() { delete[]
有如下程序段: #include<iostream> using namespace std; class base { public: base(int cnt) { resource=new int[ent]; } ~base() { delete[]
admin
2020-07-23
93
问题
有如下程序段:
#include<iostream>
using namespace std;
class base
{
public:
base(int cnt)
{
resource=new int[ent];
}
~base()
{
delete[]resource;
}
virtual void show()
{
cout<<"base"<<endl;
}
int*resource:
};
class derived:public base
{
public:
derived(int cnt):base(cnt)
{
resource=new float[cnt];
}
~derived()
{
delete[]resource;
}
void show()
{
cout<<"derived"<<endl;
}
float*resource;
};
上述程序使得derived对象中的动态内存空间有可能不被释放,有内存泄漏风险,原因是( )。
选项
A、base类是抽象类
B、derived类的析构函数没有释放基类的动态内存
C、base类的析构函数不是虚函数
D、derived类的reSotlrce与公有继承得到的resource同名
答案
C
解析
基类base中的数据成员resource为整型指针变量,派生类derived中的数据成员resource与基类base中的同名,但类型为浮点型指针变量,基类base中构造函数使用new为resource(整型指针)分配了内存空间,在析构函数中释放;派生类derived的构造函数在成员初始化类表中调用base的构造函数构造对象的基类部分,然后在构造函数体内使用new为resource(浮点型指针)分配了内存空间,在析构函数中释放浮点型resource指针;由于基类base中的析构函数未定义为虚函数,所以派生类derived中的析构函数在被调用时,不会再调用基类base中的析构函数,导致基类base中的整型指针变量resource无法释放,造成内存泄漏。故本题答案为C选项。
转载请注明原文地址:https://www.kaotiyun.com/show/pGyp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下两个类定义:classAA{BB*v1;};classBB{AA*v2;BB*v3;int*v4;};
下列情况中,不会调用拷贝构造函数的是()。
下列有关继承和派生的叙述中,正确的是()。
已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:intv1;longv2;下列调用语句中正确的是()。
下列叙述中正确的是( )。
在数据库中,数据模型包括数据结构、数据操作和
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。
如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*p的值是()。
若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是()。
随机试题
凯恩斯的货币需求函数的特点之一是提出了()货币需求。
哪项肝细胞的病理改变与乙型肝炎病毒(HBV)感染有关()(2000年)
女,30岁,诊断为右膝关节单纯滑膜结核,行滑膜切除术后3周,病情恢复平稳,对膝关节的下一步处理是
在X线片上,髓室及根管影像完全消失,不能分辨出髓腔界限表示有
我国甲级工程造价咨询单位中从事工程造价专业工作的专职人员和取得造价工程师注册证书的人员分别不少于()人。
按国际惯例,凡信用证上没有注明“CONFIRMED”字样的,即可视为保兑信用证。()
国务院及其主管部门对有关法律和法规所作的解释,属于()。
在窗体上画一个命令按钮,然后编写如下程序:Functionfun(ByValnumAsLong)AsLongDimkAsLongk=1num=Abs(num)DoWhilenumk=k*(numMod10)num=nu
Heturnedoffthelightsandthen______theroom.
BabyBoomersAreKillingThemselvesatanAlarmingRate[A]Ithaslongheldtruethatelderlypeoplehavehighersuiciderat
最新回复
(
0
)