C++中delete和delete的区别

2020-11-17 10:15:46 字数 4596 阅读 3694

1楼:du知道君

你是不是问 delete 和 delete 的区别? 一个是释放单个物体 比如 : class a;...

a *p=new a(); 一个是释放物体数组 a *p=new a[50]; delete a;

c++中delete和delete的区别

2楼:育知同创教育

delete or delete?问题没说清楚啊 如果是上面所述 delete主要是用来释放数组 特别是自定义数组 常常和new配合使用

c++中delete和delete的区别

3楼:千锋教育

c++中delete和delete的区别如下:

在**用 new 分配的单个对象的内存空间的时候用 delete,**用 new 分配的一组对象的内存空间的时候用 delete。

程序举例说明:

#include ;

using namespace std;

class t

~t()

};int main()

基本类型的对象没有析构函数,所以**基本类型组成的数组空间用 delete 和 delete 都是应该可以的;但是对于类对象数组,只能用 delete。对于 new 的单个对象,只能用 delete 不能用 delete **空间。

所以一个简单的使用原则就是:new 和 delete、new 和 delete 对应使用。

c++中delete和delete的区别

4楼:千锋教育

delete 是删除一个变量并且释放其分配的内存.一般用在非内部数据类型的对象上.

delete 删除一个数组,释放分配的内存.

上面是运算符.

free() 是c++/c语言的标准库函数,不能用在非内部数据类型的对象上,满足不了动态对象的要求.

5楼:匿名用户

一直对c++中的delete和delete的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。

c++告诉我们在**用 new 分配的单个对象的内存空间的时候用 delete,**用 new 分配的一组对象的内存空间的时候用 delete。

关于 new 和 delete,其中又分为两种情况:(1) 为基本数据类型分配和**空间;(2) 为自定义类型分配和**空间。

请看下面的程序。

#include ;

using namespace std;

class t

~t()

};int main()

大家可以自己运行这个程序,看一看 delete p1 和 delete p1 的不同结果,我就不在这里贴运行结果了。

从运行结果中我们可以看出,delete p1 在**空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete,则在**空间之前所有对象都会首先调用自己的析构函数。

基本类型的对象没有析构函数,所以**基本类型组成的数组空间用 delete 和 delete 都是应该可以的;但是对于类对象数组,只能用 delete。对于 new 的单个对象,只能用 delete 不能用 delete **空间。

所以一个简单的使用原则就是:new 和 delete、new 和 delete 对应使用。

6楼:匿名用户

是说delete和delete的区别么?

前者销毁的只是指针指向的一个对象,后者是删除一组(一个数组)

c++中delete和delete的区别

7楼:千锋教育

c++中delete和delete的区别从实例中比较如下:

#include;

usingnamespacestd;

classt

~t()

};intmain()

delete p1 在**空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete,则在**空间之前所有对象都会首先调用自己的析构函数。

基本类型的对象没有析构函数,所以**基本类型组成的数组空间用 delete 和 delete 都是应该可以的;但是对于类对象数组,只能用 delete。对于 new 的单个对象,只能用 delete 不能用 delete **空间。

所以一个简单的使用原则就是:new 和 delete、new 和 delete 对应使用。

8楼:福喜

c++告诉我们在**用 new 分配的单个对象的内存空间的时候用 delete,**用 new 分配的一组对象的内存空间的时候用 delete。

很多人注意到了这个问题,但是却不清楚为什么要这样做,不这样做行不行。

关于 new 和 delete,其中又分为两种情况:(1) 为基本数据类型分配和**空间;(2) 为自定义类型分配和**空间。

对于 (1),毫无疑问 delete 和 delete 是等同的。但是对于 (2),情况就发生了变化。

delete p1 在**空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1 [2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete,则在**空间之前所有对象都会首先调用自己的析构函数。

基本类型的对象没有析构函数,所以**基本类型组成的数组空间用 delete 和 delete 都是应该可以的;但是对于类对象数组,只能用 delete。对于 new 的单个对象,只能用 delete 不能用 delete **空间。

所以一个简单的使用就是:new 和 delete、new 和 delete 对应使用。

c++中delete和delete的区别

9楼:千锋教育

一直对c++中的delete和delete的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。

c++告诉我们在**用 new 分配的单个对象的内存空间的时候用 delete,**用 new 分配的一组对象的内存空间的时候用 delete。

关于 new 和 delete,其中又分为两种情况:(1) 为基本数据类型分配和**空间;(2) 为自定义类型分配和**空间。

请看下面的程序。

#include ;

using namespace std;

class t

~t()

};int main()

大家可以自己运行这个程序,看一看 delete p1 和 delete p1 的不同结果,我就不在这里贴运行结果了。

从运行结果中我们可以看出,delete p1 在**空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete,则在**空间之前所有对象都会首先调用自己的析构函数。

基本类型的对象没有析构函数,所以**基本类型组成的数组空间用 delete 和 delete 都是应该可以的;但是对于类对象数组,只能用 delete。对于 new 的单个对象,只能用 delete 不能用 delete **空间。

所以一个简单的使用原则就是:new 和 delete、new 和 delete 对应使用。

c++中delete和delete的区别

10楼:千锋教育

主要差别是 是否调用析构函数

delete data 会自动调用data数组每个元素的析构函数

delete data则不会

11楼:匿名用户

没区别!!!你确定你问题问的对?

drop table,truncate table和delete的区别

12楼:深圳海枫科技****

1、drop删表,表结构将删了,当然数据也不存在了2、truncate和delete删数据,表结构还在3、delete可以带条件删除,truncate是全部删除4、delete删除会写日志,truncate不写5、delete效率低,数据可以恢复,truncate效率高,数据不可恢复

truncate 和delete的区别

13楼:瑛夫科技

truncate table 在功能上与不带 where 子句的 delete 语句相同:二者均删除表中的全部行。但 truncate table 比 delete 速度快,且使用的系统和事务日志资源少。

delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

truncate table 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

truncate,delete,drop放在一起比较:

truncate table:删除内容、释放空间但不删除定义。

delete table:删除内容不删除定义,不释放空间。

drop table:删除内容和定义,释放空间。