码迷,mamicode.com
首页 > 编程语言 > 详细

C++中的delete加深认识

时间:2019-09-28 23:55:46      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:没有   delete   targe   指针   ref   避免   结束   mod   删除   

delete操作:

我们在删除一个指针之后,编译器只会释放该指针所指向的内存空间,而不会删除这个指针本身

1.假如你不去释放,那么该区域的内存始终不能被其他数据所使用。
2.指向该内存的指针是个局部变量,当定义给指针的函数结束并返回时,指针也就消失了,那么就再也找不到该块的内存区域。
假如指向该内存区域的指针自动消失了,计算机就再也找不到该区域的内存了,就好像丢了这块内存一样,这
种情况称为“内存泄漏”。
这种情况直到程序结束该区域的内存才能恢复使用。

内存泄漏:(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

野指针:指向被释放的或者访问受限内存的指针。(感觉就是不正常的指针)

造成野指针的原因:

  1. 指针变量没有被初始化(如果值不定,可以初始化为NULL
  2. 指针被free或者delete后,没有置为NULL, freedelete只是把指针所指向的内存给释放掉,并没有把指针本身干掉,此时指针指向的是“垃圾”内存。释放后的指针应该被置为NULL.
  3. 指针操作超越了变量的作用范围,比如返回指向栈内存的指针就是野指针。
与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。需对指针进行初始化。

 

 

 

 

C++ 使用delete删除指针的例子:

https://blog.csdn.net/u011301123/article/details/9293297

编译器默认将释放掉的内存空间回收然后分配给新开辟的空间

 

 

C++中的delete加深认识

标签:没有   delete   targe   指针   ref   避免   结束   mod   删除   

原文地址:https://www.cnblogs.com/Stephen-Qin/p/11605348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!