C++语言选择题40道:C++内存管理:new与delete.Tex.docxVIP

C++语言选择题40道:C++内存管理:new与delete.Tex.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE1

PAGE1

C++内存管理试题

在C++中,使用new分配的内存需要通过哪种方式释放?

A.free()

B.delete

C.delete[]

D.clear()

答案:B

解析:delete用于释放通过new操作符分配的单个对象内存。

如果使用new[]分配了一块数组内存,应该使用哪种方式来释放?

A.delete

B.delete[]

C.free()

D.clear()

答案:B

解析:delete[]用于释放通过new[]操作符分配的数组内存。

下列哪种情况会导致内存泄漏?

A.分配内存后立即释放

B.释放内存后再次使用

C.分配内存后未释放

D.使用已释放的内存

答案:C

解析:如果分配了内存但未使用delete或delete[]释放,会导致内存泄漏。

对于以下代码,ptr指向的内存会在何时被释放?

int*ptr=newint;

deleteptr;

A.在程序结束时自动释放

B.从未释放

C.在deleteptr;执行后释放

D.在ptr=0;执行后释放

答案:C

解析:deleteptr;会立即释放ptr指向的内存。

当delete一个通过new创建的对象时,以下哪个语句是正确的?

A.构造函数会被调用

B.析构函数会被调用

C.什么都不会发生

D.必须手动调用析构函数

答案:B

解析:使用delete操作符释放对象内存时,析构函数会自动被调用。

考虑以下代码片段,deletep;会释放多少个int对象的内存?

int*p=newint[10];

deletep;

A.1个

B.10个

C.0个

D.释放内存的大小无法确定

答案:A

解析:使用delete时仅释放单个对象的内存,对数组应使用delete[]。

以下代码会导致什么问题?

int*p=newint;

deletep;

deletep;

A.内存泄漏

B.编译错误

C.运行时错误,如双重释放

D.没有错误

答案:C

解析:delete一个已经释放的指针会导致运行时错误。

下列哪种情况适合使用new操作符?

A.分配固定大小的局部变量内存

B.动态分配内存,其大小在运行时确定

C.分配静态内存

D.在函数调用中分配自动存储区

答案:B

解析:new操作符用于动态分配内存,大小由运行时决定。

如果一个类的析构函数中包含delete操作,该操作用于释放什么?

A.类的所有成员变量

B.类的静态成员变量

C.通过new分配的动态成员变量

D.类的构造函数参数

答案:C

解析:析构函数中的delete用于释放通过new动态分配的成员变量内存。

对于以下代码,delete[]会被调用几次?

int*array=newint[5];

delete[]array;

A.0次

B.1次

C.5次

D.每个元素调用一次

答案:B

解析:delete[]仅被调用一次,用于释放整个动态数组。

下列代码片段中,ptr指向的内存会在构造函数B的哪个部分被分配?

classA{

public:

A(){ptr=newint;}

~A(){deleteptr;}

int*ptr;

};

classB:publicA{

public:

B(){

//构造函数体

}

};

A.在B的构造函数体中

B.在B的构造函数调用A()时

C.在B的构造函数结束后

D.在B的析构函数中

答案:B

解析:ptr的内存通过A的构造函数使用new分配,当B的构造函数调用A()构造函数时执行。

以下哪种情况下,new和delete操作符对数组使用是正确的?

intmain(){

int*array;

-//A.array=newint[10];

-//B.array=newint;

-//C.delete[]array;

-//D.deletearray;

}

A.array=newint[10];和delete[]array;

B.array=newint[10];和deletearray;

C.array=newint;和delete[]array;

D.array=newint;和deletearray;

答案:A

解析:正确使用new为数组分配内存,并用delete[]释放。

下列选项中,哪个是对new操作符使用正确的描

您可能关注的文档

文档评论(0)

kkzhujl + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档