C++野指针 空指针 危险指针

  哈喽 小伙伴大家好 新年已经接近尾声 本篇文章就来介绍一下C++危险指针 空指针 野指针

C++危险指针: 

在C++中,"危险指针"通常指的是那些未经初始化、越界访问、空指针解引用、野指针(dangling pointers)或者未释放内存等可能导致程序崩溃或未定义行为的指针。使用这些指针是非常危险的,因为它们可能导致程序崩溃、数据损坏、安全漏洞等。

空指针:

 定义空指针是一个特殊的指针,它不指向任何有效的内存地址。在C++中,通常使用nullptr(C++11及以后版本)或者NULL(C++98及以前版本,NULL通常被定义为(void*)0)来表示空指针。

 野指针:

定义野指针是指向无效内存地址的指针,通常是因为指针被释放或未初始化,但指针变量本身没有被置为nullptr,因此它仍然指向原来的内存地址,但这个地址可能已经被系统分配给其他变量或已经被释放。 

1.未初始化的指针

int *p; // p指向一个随机的内存地址,使用它之前必须初始化


2.越界访问:

int arr[5];  
int *p = arr;  
p[10] = 42; // 访问arr[10]是越界的,因为数组只有5个元素

3.空指针解引用:

int *p = nullptr;  
*p = 42; // 解引用空指针会导致程序崩溃

4.野指针

int *p = new int(42);  
delete p;  
p = nullptr; // 忘记将p置为nullptr,之后可能会误用p导致野指针问题

5.未释放内存:

int *p = new int[10];  
// ... 使用p ...  
// 忘记释放p指向的内存,导致内存泄漏

如何避免野指针和空指针

初始化指针:在使用指针之前,确保将其初始化为nullptr或有效的内存地址。

检查指针:在使用指针之前,检查它是否为nullptr或有效地址。

释放内存后重置指针:在释放指针指向的内存后,立即将指针重置为nullptr

使用智能指针:智能指针(如std::unique_ptrstd::shared_ptr)可以自动管理内存,减少野指针和内存泄漏的风险。

避免返回局部变量的地址:函数返回局部变量的地址是不安全的,因为局部变量在函数返回后可能不再存在。

 总结:总的来说 空指针和野指针都属于C++的危险指针 我们要避免使用危险指针 因为他真的很危险 会造成内存泄漏 数据损坏 安全漏洞

好了 本篇文章就到这里结束了 拜拜~

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值