27day---C++面试题

本文深入探讨了C++中内存管理的常见错误,包括new与delete、malloc与free的正确搭配使用,以及宏定义的不当使用可能导致的问题。通过具体代码示例,解析了形参存储类别、数组分配释放等关键概念。

1.有如下定义#define D 2 int x=5;floaty=3.83; char c=′D′; 则下面选项中错误的是 D
A x++;
B y++;
C c++;
D D++;
本题目解析众说纷纭,但是谨记:不可以对宏变量做原子操作
2.在C语言中,形参的缺省存储类是auto
3.以下涉及到内存管理的代码段中,有错误的是:ABD
A

int *a=new int(12);
//..... 
free(a);

B

int *ip=static_cast<int*>(malloc(sizeof(int)));
*ip=10;
//.....
delete ip;

C

double *a=new double[1];
//.... 
delete a;

D

int *ip=new int(12);
for(int i=0;i<12;++i){
ip[i]=i;
}
delete []ip;

解:
(1)new和delete搭配,malloc和free搭配
(2)注意new int(12)和new int[12]的区别。new int(12)是生成了一个值为12的int变量,new int[12]才是生成一个大小为12的数组。所以,delete []ip是错误的
(3)C a是一个数组,应该用delete []a,但是在基本类型数组来说,delete a和delete []a的效果是一样的。如果,a是一个自定义对象的数组,那么只能用delete []a

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值