C++笔试面试题带答案

VIP免费
2024-12-10 0 0 26.15KB 15 页 5.9玖币
侵权投诉
1.new 、 delete 、 malloc 、 free 关系
delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调
用构造函数。 malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是
C++ 的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型
的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时
要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于
malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执
行构造函数和析构函数的任务强加于 malloc/free 。因此 C++ 语言需要一个
能完成动态内存分配和初始化工作的运算符 new ,以及一个能完成清理与释放
内存工作的运算符 delete 。注意 new/delete 不是库函数。
总结:new 和 delete 会自动调用对象的构造与析构函数而 malloc 与 free 不会;
new 和 delete 式 C++运算符,而 malloc 和 free 是 C/C++标准库函数。
——————————————————————————————–
2.delete 与 delete [] 区别
delete 只会调用一次析构函数,而 delete[] 会调用每一个成员的析构函数。
在 More Effective C++ 中有更为详细的解释:“当 delete 操作符用于数组
时,它为每个数组元素调用析构函数,然后调用 operatordelete 来释放内
存。” delete 与 New 配套, delete [] 与 new [] 配套
MemTest*mTest1=newMemTest[10];
MemTest*mTest2=newMemTest;
int*pInt1=newint[10];
int*pInt2=newint;
delete[]pInt1; //-1-
delete[]pInt2; //-2-
delete[]mTest1;//-3-
delete[]mTest2;//-4-
在 -4- 处报错。
这就说明:对于内建简单数据类型, delete 和 delete[] 功能是相同的。对
于自定义的复杂数据类型, delete 和 delete[] 不能互用。 delete[] 删除
一个数组, delete 删除一个指针简单来说,用 new 分配的内存用 delete 删
除用 new[] 分配的内存用 delete[] 删除 delete[] 会调用数组元素的析构函
摘要:

1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化...

展开>> 收起<<
C++笔试面试题带答案.docx

共15页,预览1页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:15 页 大小:26.15KB 格式:DOCX 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 15
客服
关注