面试必考:一文搞懂野指针、悬空指针、空指针和内存泄漏,附代码示例!

野指针、悬空指针、空指针和内存泄漏是内存管理中四个重要概念。
野指针:指针变量未被初始化,或者被赋予了一个随意的、无效的地址值。它指向的内存区域可能是随机的,使用野指针会导致程序出现不可预测的行为,如程序崩溃或数据损坏
悬空指针:指针原来指向的内存已经被释放(例如通过free函数),但指针本身没有被置为NULL,仍然保存着之前内存的地址。再尝试访问这个指针所指向的已释放内存,就会产生错误。
空指针:一个特殊的指针值,它不指向任何有效的内存地址。C语言中通常用NULL表示,可用于初始化指针变量,或者在指针不指向有效地址时作为一个明确的标识。对空指针进行解引用操作是不允许的,会导致程序出错。
内存泄漏:指程序在动态分配内存(例如使用malloc、calloc等函数)后,没有释放这些内存,导致这些内存块在程序运行过程中一直被占用,无法被操作系统重新利用。随着程序的运行,内存泄漏会逐渐消耗系统内存,导致程序性能下降甚至系统崩溃。
总结,野指针和悬空指针指向无效内存(通常可以统一称为野指针),空指针则明确不指向任何内存,而内存泄漏则是未释放的有效内存,三者均可能导致程序错误和性能问题。
野指针代码示例

#include <stdio.h>
int main() {
    int *wild_ptr;
    // 没有初始化wild_ptr,它是野指针
    // 下面这行代码可能会导致错误&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一对一答疑的编程作家朱文伟

谢谢大爷谢谢大爷谢谢大爷谢谢大

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值