delete在c语言中是什么意思(C++中,if(p) delete[]p是什么意思)
![delete在c语言中是什么意思(C++中,if(p) delete[]p是什么意思)](/static/images/bgimages/beach-394503_1920.jpg)
本文目录
- C++中,if(p) delete[]p是什么意思
- C++:这里的delete []p是什么意思呢p1和p2对象都有指针p,难道是都释放了吗
- c语言backspace键的输入代表什么
- C语言的动态分配内存函数相比,C++的new 和delete运算符有什么相同点和区别呢
- delete()函数是C语言的库函数么
- C++ 中delete究竟在做什么
C++中,if(p) delete[]p是什么意思
该操作功能为如果p非空,则释放p指向的内存。
delete
是C++中的关键字,其功能为释放内存,与之对应的是new关键字。
new关键字可以申请一个单位空间,如
int
*
p
=
new
int;
是申请一个大小为int型所占空间大小的内存,并把首地址赋值给指针p。
当使用后要释放时,需要调用
delete
p;
new关键字还可以申请一组空间,如
int
*p
=
new
int
;
申请一组10个int型的空间,并赋值给指针p。
这种情况下要释放时需要调用
delete
p;
这种就是本题中所描述的情况。
至于if(p)这种写法是从C中继承来的。C中使用的分配空间函数为malloc,释放空间函数为free.
当调用free且参数为空指针(NULL)时,程序会崩溃,所以在释放的时候一般用
if(p)free(p);来做保护。即只有p非空时才释放。
而C++的delete关键字对此已经做了优化,当参数p为NULL时将不会报错,同时也不会做任何操作。所以在这里的if(p)实际上已经没有必要。只不过在使用C的free函数习惯后,或者不了解delete的新特性的编程人员,还是会加上if(p)来做保护。
C++:这里的delete []p是什么意思呢p1和p2对象都有指针p,难道是都释放了吗
delete 的意思是删除数组对象
你的p1 p2是类的对象指针,而delete=’\0’; }
这里创建的对象数组.p1和p2在申请时,各自都有一个p指向的对象数组的.一个是p1-》p一个是p2-》p
c语言backspace键的输入代表什么
backspace键的意思是删除光标前字符的按键。Backspace键是电脑键盘上的一个非常重要的键,其意义也非常重要,它的作用是删除光标前字符。如果你经常使用电脑,那么你肯定会对这个键非常熟悉。
backspace键是退格键。按下退格键,可以删除内容,除了backspace键,键盘上还有delete键,delete键是删除键,和backspace键不同,delete键可以删除光标右侧的内容,backspace键删除的是光标左侧的内容。
退格键。删除键在电脑上有两种,一种是del键,全称delete,是可以向光标后的文本内容删除;另一种是backspace键,又称退格键。Backspace不能撤除文件和文件夹。Deiete能删除文件和文件夹。
\b是退格符,按键盘上的Backspace键就是,它也是一个字符,但显示的时候是将光标退回前一个字符,但不会删除光标位置的字符,如果后边有新的字符,将覆盖退回的那个字符,这与我们在文本编器中按Backspace的效果不一样。
backspace键是计算机上的退格键,每按一次这个键鼠标的光标就会向左移动一格。它也叫回格键,每按一次会删除位于光标前的一个字符,目的是为了在文档时快速删除文章中不想要的片段,提高办公效率。
“backspace”按键为计算机退格键。该键作用为使光标左移一格,位于回车键正上方两个按键的位置,其上标有向左的箭头。该退格键也叫回格键,每按击一次可删除光标前的一个字符。
C语言的动态分配内存函数相比,C++的new 和delete运算符有什么相同点和区别呢
相同点:都会分配内存
不同点:
(1)如果构造函数和析构函数,则new和delete会分别调用构造函数和析构函数,malloc和free则不会
(2)malloc和free是函数,而new和delete是运算符
delete()函数是C语言的库函数么
delete()并不是C语言的库函数
delete()在c++中经常用到,但是其实它本身和new对应,并不是函数,而是关键词
在这里,和 sizeof 类似,new 和 delete 也不是函数,它们都是 C++ 定义的关键字,通过特定的语法可以组成表达式。和 sizeof 不同的是,sizeof 在编译时候就可以确定其返回值,new 和 delete 背后的机制则比较复杂。
delete 就做了两件事情:
调用 指向对象的析构函数,对打开的文件进行关闭。
通过标准库函数 operator delete 来释放该对象的内存,传入函数的参数为 对象 的值。
与new/delete不同,malloc()/free()才是标准库函数
C++ 中delete究竟在做什么
delete只是删除p初始的时候new出来的那一块内存区域.并不会把指针p删除,也不会把指针p所指向的地址删除,delete后需要把p=NULL,否则有可能指向一块被回收的内存,下次再次使用p的时候造成崩溃.
#include 《iostream.h》
void main()
{ int * p = new int ;
* p= 7;
cout 《《"p的指向"《《 p 《《endl; //这里是刚开辟的内存的起始地址
cout 《《"p所指向空间的大小"《《 *p 《《endl;
delete p;
cout 《《 "释放后"《《endl;
cout 《《"p的指向"《《 p 《《endl; //这里所指向的地址已经被回收(同时析构)了,但是p仍然指向那里
cout 《《"p所指向空间的大小"《《*p 《《endl;
* p = 9;
cout 《《"p的指向"《《 p 《《endl; //这里可以这么做,但是有可能会导致内存写入崩溃,因为p指向的那块地址已经不合法
cout 《《"p所指向空间的大小"《《*p 《《endl;
* p = 9;
int a =9;
p = &a
cout 《《"p的指向"《《 p 《《endl;//这里将p指针重新指向a的地址,a的地址是合法的
cout 《《"p所指向空间的大小"《《*p 《《endl;
}
![delete在c语言中是什么意思(C++中,if(p) delete[]p是什么意思)](/static/images/bgimages/ikea-4048225_1920.jpg)
更多文章:
简易w3school教程网页面代码(想记一下网页制作的常用代码,不知道有哪些)
2025年12月2日 14:45
正则表达式匹配换行符和空格(为什么这个正则表达式不能匹配空格和换行)
2026年4月22日 13:30
js图片无缝滚动的原理(请问一下滚动的原理是什么,我有点晕乎乎的谁能给我解释详细一点感激不尽)
2026年4月24日 09:00
notnull参数的作用(SpringMVC注解中的这个@Resource和@Notnull各有什么用处啊能讲详细点么)
2026年1月12日 23:15
插入语句命令(VF中如果要在第3条记录之前插入新的记录,应怎样编写insert语句)
2026年8月24日 18:15
memcached性能(PHP中4个加速,缓存扩展的区别和选用建议)
2025年9月8日 08:45
national geographic(national geographic什么意思)
2026年1月16日 18:15
















