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 指向零地址

相关推荐
zhoutongsheng23 分钟前
如何解决ORA-01078参数文件错误_pfile与spfile互相创建恢复
jvm·数据库·python
2401_8242226927 分钟前
HTML怎么标注字数限制提示_HTML实时字数统计占位【详解】
jvm·数据库·python
一个爱编程的人32 分钟前
一个数是不是素数
数据结构·算法
忡黑梨1 小时前
eNSP_从直连到BGP全网互通
c语言·网络·数据结构·python·算法·网络安全
littleM1 小时前
深度拆解 HermesAgent(五):记忆系统与用户建模
jvm·人工智能·架构·ai编程
dfdfadffa1 小时前
如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
jvm·数据库·python
m0_624578591 小时前
SQL分组后如何计算移动平均值_利用窗口函数AVG配合ROWS
jvm·数据库·python
2401_824222692 小时前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
地球资源数据云2 小时前
1900-2023年中国物种分布点位矢量数据集
大数据·数据结构·数据库·数据仓库·人工智能
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index