zoukankan      html  css  js  c++  java
  • 僵尸对象

    
    

    //野指针。就是没有指向具体地址的指针

    /*

     僵尸对象

     已经被销毁的对象(不能再使用的对象)

     

     野指针

     指向僵尸对象(不可用内存)的指针

     给野指针发消息会报EXC_BAD_ACCESS/EXC_BREAKPOINT错误(message sent to deallocated instance 0x100100350)

     

     空指针

     没有指向存储空间的指针(里面存的是nil, 也就是0)

     给空指针发消息是没有任何反应的,不会提示出错!

     

     为了避免野指针错误的常见办法

     1.在对象被销毁之后, 将指向对象的指针变为空指针(p=nil)

     2.在初始化变量时初值为null

    */

    #import <Foundation/Foundation.h>


    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            //第一种野指针情况

            int * p =  malloc(40);

            

            p[0] = 123;

             for (int i = 0; i<1000; i++) {

                int * temp = calloc(4, 10);

                free(temp);

            }

            

          //第二种情况:在main()函数中如果为mainvoid 的话,定义变量不初始化变量里就是垃圾数。如果定义一个指针,那么,这个指针指向哪里也是不知道的,也是野指针。

          

     NSLog(@"%d",p[0]);

        }

        return 0;

    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    MySQL学习(十二)
    MySQL学习(十一)
    MySQL学习(十)
    MySQL学习(九)
    MySQL学习(八)
    hlg1600线性代数中的矩阵问题【区间dp】
    HDU1556Color the ball【标号法||树状数组】
    hlg1481 Attack of the Giant n-pus【二分+二分图】
    0918
    20140913
  • 原文地址:https://www.cnblogs.com/wahy/p/4817222.html
Copyright © 2011-2022 走看看