那到底什么是野指针呢?怎么去理解这个“野”呢?我们先看别的两个关于“野”的词:

野孩子:没人要,没人管的孩子;行为动作不守规矩,调皮捣蛋的孩子。
野狗:没有主人的狗,没有链子锁着的狗,喜欢四处咬人。

对付野孩子的最好办法是给他定一套规矩,好好管教。一旦发现没有按规矩办事就好好收拾他。

对付野狗最好的办法就是拿条狗链锁着它,不让它四处乱跑。

对付也指针肯怕比对付野孩子或野狗更困难。我们需要把对付野孩子和野狗的办法都用上。

既需要规矩,也需要链子。

前面我们把内存比作尺子,很轻松的理解了内存。尺子上的0毫米处就是内存的0地址处,也就是NULL地址处。这条栓“野指针”的链子就是这个“NULL”。定义指针变量的同时最好初始化为NULL,用完指针之后也将指针变量的值设置为NULL。也就是说除了在使用时,别的时间都把指针“栓”到0地址处。这样它就老实了。

陈正冲老师对于c语言野指针的解释的更多相关文章

  1. 陈正冲老师讲c语言之内存的申请malloc() 和释放free()

    1.如何使用 malloc 函数 不要莫名其妙,其实上面这段小小的对话,就是malloc的使用过程.malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要几个要求: 内存分配给谁?分 ...

  2. 陈正冲老师讲c语言之声明和定义的区别

    什么是定义?什么是声明?它们有何区别? 举个例子: A)int i; B)extern int i;(关于extern,后面解释) 哪个是定义?哪个是声明?或者都是定义或者都是声明?我所教过的学生几乎 ...

  3. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  4. 陈正冲老师讲c语言void关键字

    1. void a void的字面意思是“空类型”,void *则为“空类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量 ...

  5. C语言 野指针与空指针

    //野指针与空指针的区别 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //野指针是 ...

  6. C语言野指针

    本文转载自:http://blog.csdn.net/xwdok/article/details/576497 "野指针"不是NULL指针,是指向"垃圾"内存的 ...

  7. C语言-----野指针

    问题所在 1.局部指针变量没有被初始化 2.使用已经释放过后的指针 3.指针所指向的变量在指针之前被销毁 4.结构体成员指针未初始化, 没有为结构体指针分配足够的内存 ,内存越界(考虑使用柔性数组)和 ...

  8. C/C++中内存泄漏、内存溢出与野指针的解释与说明

    1.内存泄漏 内存泄漏是指我们在堆中申请(new/malloc)了一块内存,但是没有去手动的释放(delete/free)内存,导致指针已经消失,而指针指向的东西还在,已经不能控制这块内存, 所以就是 ...

  9. c语言函数指针的理解与使用

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun ...

随机推荐

  1. cwm-recovery自动生成工具

    android发展迅速,刷机已经成了一种习惯,cwm-recovery是必不可少的工具,下面我把自己用的自动生成cwm-recovery的工具发布出来,供友友们交流和学习,欢迎拍砖 已经公开发布在gi ...

  2. 字符串做异或使用union

    #include <stdio.h> #include <sys/time.h> #include <string.h> union data { unsigned ...

  3. 图像处理-07-图像的轮廓提取-Robert算子

    图像的轮廓提取-Robert算子 图像的边缘:周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,边缘广泛存在于物体与背景之间.物体与物体之间,基元与基元之间,是图像分割的重要依据. 物体的边缘是由 ...

  4. Kinetic使用注意点--lable

    new Lable(config) 参数: config:包含所有配置项的对象. { x: "横坐标", y: "纵坐标", width: "宽度&q ...

  5. 在Qt Creator中添加OpenCV库

    在项目的pro文件中添加如下代码:INCLUDEPATH += D:/opencv/build/include win32:CONFIG(debug, debug|release): {LIBS += ...

  6. 我的WebX框架学习总结与心得分享

    最近学习了webx框架, 利用博客园跟大家分享一下自己的学习心得; 周建旭 2014-08-21 网上关于webx的资料少的可怜, 怎么办?  这种情况下不用去求助别人求人只会耽误时间, 不用畏惧; ...

  7. (转)为什么adrl r2,mem_cfg_val这里不用ldr r2,=mem_cfg_val

    网址:http://blog.csdn.net/glorin/article/details/6327083 memsetup:mov r1, #MEM_CTL_BASEadrl r2,mem_cfg ...

  8. HDFS 的可靠性

    HDFS 的可靠性主要有一下几点: 冗余副本策略 机架策略 心跳机制 安全模式 效验和 回收站 元数据保护 快照机制 1.冗余副本策略 可以在hdfs-site.xml中设置复制因子指定副本数量 所有 ...

  9. Mybatis 一对一、一对多、多对多关联之级联添加

    示例项目:MIPO_CRM 一.一对一关联 示例:订单与销售机会 描述:在业务员与客户的联系人的联系记录中可以生成一条销售机会,而此条销售机会可生成一条订单,两者呈一对一关联. 1.表设计 oppor ...

  10. C#跳出循环的几种方法的区别

    break是循环结束执行,执行循环体后面的代码. continue是跳过本次循环未执行的代码,继续执行下一次循环. goto是跳到指定的指令去,你指哪,他跳到哪. return是函数返回,如果循环在M ...