C语言特殊指针

1 野指针

  • 概念:指向一块未知区域的指针,被称为野指针。野指针是危险的。
  • 危害:

    1. 引用野指针,相当于访问了非法的内存,常常会导致段错误(segmentation fault)
    2. 引用野指针,可能会破坏系统的关键数据,导致系统崩溃等严重后果
  • 产生原因:

    1. 指针定义之后,未初始化
    2. 指针所指向的内存,被系统回收
    3. 指针越界
  • 如何防止:

    1. 指针定义时,及时初始化
    2. 绝不引用已被系统回收的内存
    3. 确认所申请的内存边界,谨防越界

2 空指针

很多情况下,我们不可避免地会遇到野指针,比如刚定义的指针无法立即为其分配一块恰当的内存,又或者指针所指向的内存被释放了等等。一般的做法就是将这些危险的野指针指向一块确定的内存,比如零地址内存。

  • 概念:空指针即保存了零地址的指针,亦即指向零地址的指针。

  • 示例:

    // 1,刚定义的指针,让其指向零地址以确保安全:
    char *p1 = NULL;
    int *p2 = NULL;

    // 2,被释放了内存的指针,让其指向零地址以确保安全:
    char *p3 = malloc(100); // a. 让 p3 指向一块大小为100个字节的内存
    free(p3); // b. 释放这块内存,此时 p3 相当于指向了一块非法内存
    p3 = NULL; // c. 让 p3 指向零地址

相关推荐
花糖纸木19 分钟前
算法练习:34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·c++·算法·leetcode
daily_233320 分钟前
数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!
数据结构·算法·排序算法
向前看-1 小时前
贪心-小c点菜问题
数据结构·c++·笔记·算法·贪心算法
肘击鸣的百k路2 小时前
JVM基本结构(详细)
jvm
kitesxian7 小时前
Leetcode53. 最大子数组和(HOT100)
数据结构·算法·leetcode
重生之我在VS写bug9 小时前
【C++知识总结2】C++里面的小配角cout和cin
数据结构·c++·算法
奶茶戒断高手11 小时前
【CSP CCF记录】201903-2第16次认证 二十四点
数据结构·c++·算法
shepherd枸杞泡茶12 小时前
C# 数据结构之【队列】C#队列
开发语言·数据结构·c#
黑眼圈的小熊猫12 小时前
数据结构--B树
数据结构·b树
爪哇斗罗14 小时前
JVM调优篇之JVM基础入门AND字节码文件解读
jvm