文章目录

  • 一、野指针
  • 二、避免野指针推荐方案

一、野指针


参考 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 ) 四. 野指针 ( 程序BUG根源 ) 博客章节 ;

野指针产生原因 : 指针变量 指向的 内存空间 被释放 , 但是 指针变量 还保存着一个地址值 , 此时不能随便修改该地址值 中的数据 ;

指针变量 与 指针指向的内存空间数据值 是不同的概念 ;

二、避免野指针推荐方案


避免野指针方法 :

  • 定义指针变量 置空 : 声明 指针变量 时 , 为其设置初始值 NULL ;
char *p = NULL;
p = (char *)malloc(10);
  • 释放内存后 指针变量 置空 : 释放 指针变量 指向的内存后 , 立刻将指针变量设置为 NULL ;
free(p);
p = NULL;

只要 声明指针 , 一律给 指针变量 设置 NULL 初始值 ; 只要 释放指针 , 一律将指针变量设置 NULL ;

这样 使用指针 前 , 判断该 指针变量 是否为 NULL , 就可以判断该指针是否是有效指针 ;

【C 语言】指针数据类型 ( 野指针 | 避免野指针推荐方案 )相关推荐

  1. 学点 C 语言(22): 数据类型 - 多维数组与指针

    为什么80%的码农都做不了架构师?>>>    1. 关于数组的首地址: #include <stdio.h>int main(void) {char cs[2][3] ...

  2. C语言free空空指针,dmc: Dynamic Memory Check (DMC) , 解决C语言空指针、悬空指针、越界访问、野指针问题的一个方案。...

    Dynamic Memory Check (DMC) 动态内存检测 动态内存检测,既在程序运行的时候检测内存的越界,野指针,空指针等问题,可以提高软件的安全性与稳定性.使用宏实现,所以对性能的消耗不大 ...

  3. 指针 是否相同_c专题之指针---野指针和空指针解析

    ----在上一篇c专题指针文章中,我们介绍了什么是指针,文章里面从普通变量进而引出指针的概念,这样对指针的理解有一定的帮助(其实最好的理解,就是要明白硬件里面的内存原理,这是理解指针最好的地方,就好比 ...

  4. C++中野指针和空指针和无类型指针

    C++中野指针和空指针和无类型指针https://blog.csdn.net/chenguolinblog/article/details/27054267 一. 野指针 所谓的野指针指的是一个指针变 ...

  5. c语言类型名占字节,C语言实现 数据类型占多少字节指针占多少字节

    具体代码如下所示: #include void main() { //使用sizeof验证数据类型在内存中占用的空间大小 // char // int // short // long // unsi ...

  6. 黑马程序员(57.指针-指针所占内存空间-58.指针-空指针-59.指针-野指针)

    黑马程序员(57.指针-指针所占内存空间-58.指针-空指针-59.指针-野指针) 一,57.指针-指针所占内存空间 二,58.指针-空指针 三, 59.指针-野指针 来自黑马程序员 一,57.指针- ...

  7. C语言基本数据类型笔记整理(整型、实型/浮点型、字符型、枚举型、构造类型、指针类型、空类型)

    C语言基本数据类型 一.整型 ①有符号整型 ②无符号整型 二.实型 三.字符型 四.枚举型 五.构造类型 ①数组 ②结构体 ③共用体 六.指针类型 七.空类型 一.整型 ①有符号整型 有符号整型 关键 ...

  8. 【C 语言】指针数据类型 ( 指针类型变量 | 使用 * 操作内存 )

    文章目录 一.指针类型变量 二.使用 * 操作内存 一.指针类型变量 指针 也是 变量 , 也占用内存空间 , 可以用于保存 内存地址 ; 测试 指针 变量占用的内存空间大小 : 定义一个 int * ...

  9. 【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )

    文章目录 一.不允许向 NULL 地址写入数据 二.不允许不断地改变指针指向 三.字面量存放位置 一.不允许向 NULL 地址写入数据 声明指针变量 , 并为其 设置 NULL 初始值 , NULL ...

最新文章

  1. Java8 对Map进行排序
  2. 容器,对象生命周期管理的基石
  3. linux系统管理命令--系统测试工具
  4. 皮一皮:这才是持之以恒的专一...
  5. oracle分组排序
  6. 虚拟机删除后服务器内存,卸载虚拟机后仍占内存
  7. [Head First Java] - Swing做一个简单的客户端
  8. CSS:CSS+JS制作可折叠内容块
  9. 大数据笔记(二十一)——NoSQL数据库之Redis
  10. java.util.NoSuchElementException: None.get的解决方法
  11. 1.7 试探法(回溯法)
  12. matlab用mkdir在指定的文件夹下创建新的文件夹,并把图像保存在该文件夹内
  13. 传统武术家为什么看起来厉害?谈实战的重要性
  14. SPSS实现游程检验
  15. 自带win10系统换win7的那些坑
  16. 微信公众号模板消息推送,中文乱码
  17. 使用nfsstat命令查看NFS服务器状态
  18. 多边形偏移算法c语言,多边形的偏移填充算法
  19. 基于Python的安卓图形锁破解程序
  20. 软件测试公司常见的部门有哪些?

热门文章

  1. android 使用Ksoap2工具类实现WebService网络编程
  2. iphone-common-codes-ccteam源代码 CCUIAlertView.m
  3. 想起linux关机命令
  4. T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解
  5. Ajax+Node.js前后端交互最佳入门实践(05)
  6. JavaScript多浏览器兼容问题
  7. Sqlserver循环嵌套
  8. web前端——html基础笔记 NO.12{css布局模型(流动,浮动,层模型)}
  9. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书...
  10. 关于Map迭代循环,key和value的顺序问题