首页 > 试题广场 >

关于delete运算符的下列描述中,( )是错误的。

[单选题]
下面关于delete描述错误的是()


  • 它必须用于new返回的指针
  • 使用它删除对象时要调用析构函数
  • 对一个指针可以使用多次该运算符
  • 指针名前只有一对方括号符号,不管所删除数组的维数
指针为void*,int*等内置类型时,使用delete不需要调用析构函数
编辑于 2019-05-04 23:39:47 回复(0)
更多回答
推荐
【正确答案】C
【解析】C 选项错误,不能对一个指针使用多次 delete。因为 delete 以后,此内存已经被收回,可能被分配用于其它数据,因此再次 delete 导致其它数据被非法修改,这是一种不确定的行为。
delete 用于释放 new 创建的内存,delete [] 用于释放 new 创建的数组内存。delete 后面只能跟上 new 返回的指针变量。
使用 delete 释放对象内存时会调用对象的析构函数。
 
new 和 delete 运算符知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp74
编辑于 2021-11-18 08:24:38 回复(1)
答案B说的有问题,delete调用析构函数是隐式调用,不是显示调用的。但是描述明显就是显示调用,误导人
发表于 2019-10-09 15:36:10 回复(1)
答案C 我有点小疑问,智能指针能不能多次调用delete?
发表于 2019-08-15 11:48:09 回复(0)
首先new和delete是匹配使用的,因此对于一个new运算符声明的指针,只能匹配一个delete使用,且要用delete运算符来释放内存,
其次,在调用delete释放内存时,需要调用析构函数,原则是:析构函数看指针是什么类型的,就调用那个类的析构函数,然后按继承的顺序,依次来调用父类的析构;
发表于 2018-12-06 10:36:49 回复(0)
new delete必须匹配使用,否则会出现内存泄露的问题,对于一个指针,可以通过delete[]来释放
发表于 2018-05-21 08:34:22 回复(0)
char *s=new char(5);
delete[] s;
delete[] s;
这样编译运行是没有问题的喔,求解释😥
发表于 2019-08-26 18:26:53 回复(2)
无论是delete还是free,都不能对同一个指针重复使用多次(两次及其以上),会出错的。
编辑于 2020-06-10 21:21:29 回复(0)
每次delete之后再重新分配内存,就可以多次调用delete。题目不严谨。
发表于 2024-10-15 17:34:33 回复(0)
delete this怎么说
发表于 2023-02-21 10:12:52 回复(0)
A,没有必须,因该是最好,
C,如果指针中存的是空指针呢?
发表于 2022-08-11 06:47:41 回复(0)
C选项我不可以把用一个指针变量开辟一次 清除一次循环用吗
发表于 2022-05-04 20:53:19 回复(0)
这题太不严谨了,2B选项明显表示显示调用,任谁去读都会这么以为。
发表于 2022-02-18 08:47:14 回复(0)
删除new返回的指针后,内存会被释放,该指针就不存在了,所以不能多次删除
发表于 2022-02-11 09:42:52 回复(0)
delete在某些场合也可以释放malloc出来的啊
发表于 2022-01-20 22:48:08 回复(0)
A也是错误的,delete操作符底层也调用了free,那么malloc的内存在有些场合也可以用delete删除的
发表于 2021-11-25 05:41:02 回复(0)
我怎么觉得答案是B呢
参考
https://www.cnblogs.com/findumars/p/5615695.html


发表于 2019-09-18 20:09:16 回复(0)