C++中悬垂指针(delete后指针)仍然可以访问所指内存的问题

news/2025/2/22 0:13:35/

C++中悬垂指针(delete后指针)仍然可以访问所指内存的问题

在指针被delete之后,此时指针被称为空悬指针或者悬垂指针,即指向一块曾经保存数据对象,但现在已经无效的内存的指针。

在C++编程中,当我们delete一个指针后,指针所指向的堆地址空间便被释放,指针值变成无效,该内存可以用于之后的内存分配。

但是虽然该指针已经无效,但在很多机器上该指针仍然保存着已经被释放了的动态内存地址(并且内存地址中的值也并未被擦除),因此此时该指针仍然能用于操作这块内存,但这么做是不合理的,也极度不安全

因此,正确的做法是在使用delete了一个指针之后,及时将该指针置为nullptr

class Drived {public:Drived() { std::cout << "Drived构造函数" << std::endl; }~Drived() { std::cout << "Drived析构函数" << std::endl; }void func() {std::cout << "Drived的func" << std::endl;}
};
int main() {Drived* obj = new Drived();std::cout << obj << std::endl;obj->func();delete obj;obj->func();std::cout << obj << std::endl;int* p = new int(2);std::cout << *p << std::endl;delete p;std::cout << *p << std::endl;return 0;
}
/*
Drived构造函数
0x6aff40
Drived的func
Drived析构函数
Drived的func
0x6aff40
2
7004736
*/

http://www.ppmy.cn/news/1131637.html

相关文章

Autosar——SWC配置(Davinci Developer)

SWC配置目录 一、创建一个SWC的Package二、SWC Type三、Data Types1.Application Data Types(简称ADT)2.Implementation Data Types(简称IDT)3.Base Types4.Units:5. Compu Method:6. Data Contraints:四、Constants(常量)五、Application Port Interfaces六、Type Ma…

Leetcode 50.Pow(x,n)

实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000示例 2&#xff1a; 输入&#xff1a;x 2.10000, n 3 输出&#xff1a;9.26100示例…

vue前端项目中添加独立的静态资源

如果想要在vue项目中放一些独立的静态资源&#xff0c;比如html文件或者用于下载的业务模板或其他文件等&#xff0c;需要在vue打包的时候指定一下静态资源的位置和打包后的目标位置。 使用的是 copy-webpack-plugin 插件&#xff0c;如果没有安装则需要先安装一下&#xff0c;…

Spring的注解开发-依赖注入相关注解

在之前的学习中&#xff0c;Bean的依赖注入主要是通过xml配置文件中<property>来完成属性的注入操作&#xff0c;在往期的bean创建的文章中&#xff0c;都是以xml方式来完成bean对象的配置。 Spring主要提供以下注解&#xff0c;用于Bean内部进行属性注入 注解用途Autow…

wvp-GB28181-pro windows系统编译安装的坑:录像功能不能正常使用

说明 wvp-GB28181-pro 只是包含了实时视频的接入功能&#xff1b; GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联…

ROS2 中的轻量级、自动化、受控回放

一、说明 这篇文章描述了一种在 ROS2 中实现受控重播器的轻量级方法。用以测试中将现象重新播放一遍&#xff0c;以实现调参或故障定位的目的。所有源代码都可以在这里找到。该帖子也可在此处获得。 二、问题&#xff1a;不同步重播 任何曾经认真开发过 ROS2 的人都会知道这个问…

Kafka:安装与简单使用

文章目录 下载安装windows安装目录结构启动服务器创建主题发送一些消息启动消费者设置多代理集群常见问题 工具kafka tool 常用指令topic查看topic删除topic 常见问题参考文献 下载安装 下载地址&#xff1a;kafka-download windows安装 下载完后&#xff0c;找一个目录解压…

Arcgis克里金插值报错:ERROR 010079: 无法估算半变异函数。 执行(Kriging)失败。

Arcgis克里金插值报错&#xff1a;ERROR 010079: 无法估算半变异函数。 执行(Kriging)失败。 问题描述&#xff1a; 原因&#xff1a; shape文件的问题&#xff0c;此图可以看出&#xff0c;待插值的点有好几个都超出了地理范围之外&#xff0c;这个不知道是坐标系配准的问…