大家看看,好象没有一个对啊?
下面动态存储分配和释放使用正确的是:
A) int p; B) int *p;
p=new int; p=new int (100);
… …
delete p; delete *p;
C) int *p; D) int *p;
p=new int (100); p=new int[100];
… …
delete []p; delete p;
问题点数:20、回复次数:26Top
1 楼wjyhl(VC◎先锋◎)回复于 2003-12-04 20:39:53 得分 0
当然是D 对了Top
2 楼qybao(阿宝)回复于 2003-12-04 20:44:58 得分 0
是的
D对的
D) int *p;
p=new int[100]; //相当于p=(int *)malloc(sizeof(int) * 100);
…
delete p; //相当于free(p);
Top
3 楼abitz(阿奈)(老婆永远是对的!)回复于 2003-12-04 20:45:16 得分 0
D对吗?
好像真的没有对的啊Top
4 楼abitz(阿奈)(老婆永远是对的!)回复于 2003-12-04 20:50:08 得分 0
真的是这样?
哦,是不是pod类型的数据在new时不必调用vec_new,
直接使用::operator new分配到内存;
而delete也不必调用vec_delete,直接释放内存啊?
不过怎么看也觉得不顺眼啊。。。Top
5 楼Sodier(逍遥神剑)回复于 2003-12-04 20:51:51 得分 0
我觉得没有对的Top
6 楼BAYERN(我有个愿望-要把月亮踹成直的,把太阳捏成方的)回复于 2003-12-04 21:36:27 得分 0
D对??扯淡么?
Top
7 楼heguobaoceo(awen)回复于 2003-12-04 21:53:52 得分 0
int *p;
p=new int[100];
delete []p;
上面的才是正确的哦
可是提供的答案好象都没有
Top
8 楼byyyyy(苦行僧【苦】)回复于 2003-12-04 22:05:51 得分 0
int *p;
p=new int[100];
delete []p;
应该是这样。因为分配10个int型的空间要用方括弧,是一个数组。
释放的时候也应该指明释放的是有一定大小的空间。Top
9 楼erlengzi2003(二愣子)回复于 2003-12-04 22:11:14 得分 20
int *p;
p=new int (100);
…
delete p;
或者
int *p;
p=new int[100];
…
delete []p;
都是正确的!
Top
10 楼021850524(吸血鬼牌卫生巾)回复于 2003-12-05 03:04:37 得分 0
四个答案没一个对的.
只有erlengzi2003(二愣子)说的对.Top
11 楼sms88(白板http://shop34112882.taobao.com)回复于 2003-12-05 09:21:33 得分 0
没有一个是正确的
D 只能释放一个,而不是一百哦Top
12 楼byyyyy(苦行僧【苦】)回复于 2003-12-05 09:39:25 得分 0
p=new int (100);
和
p=new int 【100】;
什么区别?
什么书上有这方面的?Top
13 楼byyyyy(苦行僧【苦】)回复于 2003-12-05 09:41:06 得分 0
p=new int (100); 这样可以嘛?Top
14 楼cguoyin(独钓寒江)回复于 2003-12-05 11:07:27 得分 0
int 就和CLASS 一样吗,用100初始吗
Top
15 楼expiry(寻阳)回复于 2003-12-05 23:21:11 得分 0
re: byyyyy(苦行僧)
p=new int (100)就是吧p指向的值赋成100Top
16 楼michaelli(冰意)回复于 2003-12-05 23:25:23 得分 0
好象真的没对的Top
17 楼timepalette(时间调色板)回复于 2003-12-06 14:54:52 得分 0
明显是B对了吗.
先定义一个指针,然后分配内存,顺便把所分配的空间存上"100".
然后又释放内存.
为什么没人说B对??Top
18 楼zero00zero(零零)回复于 2003-12-06 23:05:16 得分 0
timepalette(时间调色板) :
注意看,B 项删除时用的是 delete *p; 这样相当于delete 100; 谁也不知道会发生什么事。
B 如果改成 delete p; 就是是对的了。Top
19 楼pig_2000()回复于 2003-12-06 23:15:43 得分 0
d对了
delete p没问题。
delete []p是当p为指针数组时才可用。Top
20 楼anda1982(牧童)回复于 2003-12-06 23:25:07 得分 0
我认为D对的呀!因为再c++中
int *p=new int[100];//定义一个数组
delete p;//p是指向数组的,当释放申请的空间时p从头指针开始释放
这是我个人的观点哦!!!Top
21 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-12-07 00:39:22 得分 0
四个答案没一个对的.
只有erlengzi2003(二愣子)说的对.
new int(100); 等于用 100 作为初始值去调用 int::int(const int&) copy-ctorTop
22 楼daiyike(伊可)回复于 2003-12-07 00:57:41 得分 0
同意 erlengzi2003(二愣子) 的意见!
C++中的new和delete有点类似于c中的malloc和free.不过不太清楚他们的区别,哪位能说说?Top
23 楼ThinkX(秋天的树)回复于 2003-12-07 01:03:14 得分 0
显然没有正确的,可能在A中少了一个*。Top
24 楼cchuocp(井底之蛙)回复于 2003-12-07 01:19:53 得分 0
不要争了,老师希望的答案是B,因为它是对的。
A编译通不过。
C和D虽然在分配和释放上不匹配。但事实上不会有任何错误发生,因为int类型没有去构函数。delete和delete[]的区别就是delete只对第一个调用去构函数,而delete[]对全部调用去构函数,int类型没有去构函数,所以两者实质上一样。
许多老师都是一知半解,还喜欢出一些稀奇古怪的题,简直误人子弟!!!!!
Top
25 楼ThinkX(秋天的树)回复于 2003-12-07 01:26:10 得分 0
我宁可认为是D,也不能说b是对的,
你的老师简直智利不健全。Top
26 楼Meuck(如果你相信什么,你就应当有所了解)回复于 2003-12-08 17:07:30 得分 0
这是我同学拿给我的题,我想可能是印错了吧.
之前看过 effectiveC++
所以我想大概答案我已知道了.
就是没有一个吧,我只是来确认一下.
谢谢各位^^
Top
相关问题
- 在循环中c的continue好象basic中没有对应的,是不是呀
- command对象如何释放空间呀?好象没有close这个方法。
- eclipse好象没有IDE界面啊
- .net 7.0中好象没有了 ClassWizard ?
- 好象好久没有散过分了,@_@·····························
- vs.net 的工具栏怎样实现,要继承toolbar对吗?可怎么分栏,.net好象没有coolbar
- 到底stdafx.*有什么用,好象没有了是不行哦~~~~~~
- bz2文件怎么解开,linux中好象没有bunzip2工具?
- 人气好象不高,问题都没有什么更新的……
- 好象没有加载applet小程序,为什么?




