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

被折叠的 条评论
为什么被折叠?



