zoukankan      html  css  js  c++  java
  • 【c】野指针(迷途指针)的理解

    DATE: 2018.12.16


    直接上程序:

    #include <iostream>
    using namespace std;
    int main()
    {
    	int *pInt = new int;
    	*pInt=10;
    	cout<<*pInt<<endl;
    	delete pInt;
    	*pInt=20;    // oh no, this was deleled.
    	cout<<*pInt<<endl;
    	return 0;
    }
    

    //Compile this program successfully,but when running it, collapse.

    迷途指针也叫悬浮指针,失控指针,是对一个指针delete后---这样会释放它所指向的内存---并没有把它设置为空时产生的。而后,如果你没有赋值就试图再次使用该指针,引起的结果是不可预料的.
    当delete一个指针时,实际上仅是让编译器释放内存,但指针本身依然存在。这时它就是一个迷途指针。

    当使用以下语句时,可以把迷途指针改为空指针:

    MyPtr=0;
    

    通常,如果在删除一个指针后又把它删除了一次,程序就会变得非常不稳定,任何情况都有可能发生。但是如果你只是删除了一个空指针,则什么事都不会发生,这样做非常安全。
    使用迷途指针或空指针(如MyPtr=0)是非法的,而且有可能造成程序崩溃。如果指针是空指针,尽管同样是崩溃,但它同迷途指针造成的崩溃相比是一种可预料的崩溃。这样调试起来会方便的多。


    THE END !

  • 相关阅读:
    Drupal 7 中文安装教程
    苹果之硬盘启动安装
    STP详解
    RedHat Install
    Linux密码更改
    win8.1开启虚拟wifi
    跳过安装密钥安装系统
    虚拟机中Linux安装Tools
    桌面虚拟化之XenDesktop7
    桌面虚拟化之部署DDC-5.6
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532200.html
Copyright © 2011-2022 走看看