关于读文件程序编译器报错pointer being free was not allocated的解决思路。

2023-11-10 20:41

本文主要是介绍关于读文件程序编译器报错pointer being free was not allocated的解决思路。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于读文件程序编译器报错pointer being free was not allocated的解决思路。

本人菜鸟,写学生管理程序大作业时出现报错,在这里插入图片描述走了挺多弯路,最后勉强解决,因为当时出问题的时候没有找到相同的帖子,所以在此总结分享。如果有误请指出,我还需要多多学习。

测试样例

类的声明
在这里插入图片描述
通过三种方式建立student类的对象,产生了不同的结果
第一种:
在这里插入图片描述
报错如下:
在这里插入图片描述
在这里插入图片描述
可以见到,student对象被析构了两次。
他说指针被再次释放了,于是我就想直接用指针申请内存试试。
第二种:
在这里插入图片描述
正常通过。
在这里插入图片描述
然后我想到申请了内存应该要delete掉,不然会内存泄露
于是我加上了delete
在这里插入图片描述
于是出现了和第一种一样的错误。

于是我联想到会不会是浅拷贝的问题,但是我的类里面没有指针。最多也就是string类,和指针相关。
问了学长,学长告诉我把string换成char[]试试,成功通过。
于是就确定了是string类里的指针导致这个状况。
而且如果是浅复制造成的问题,是有多个对象释放了同一个地址的内存,于是我考虑了会不会是read函数里产生了拷贝,我把read()注释掉后就没有这个问题了。
于是我去查了read函数,可能就是这个sentry object造成的吧。
在这里插入图片描述
##结论:
把string 换成char[], 也可解决问题。实际上就是,当类中使用string时,string本质上是一个指针,动态申请内存。使用read函数的时候,产生sentry对象,当超过sentry对象的生存期时,sentry对象被析构,string所指的内存被释放。 如果是使用student 类对象stu,在sentry对象析构之后,程序结束,stu析构,string所指地址被析构两次,出错。 如果是使用student类指针动态申请内存,当超过匿名对象的生存期时,匿名对象被析构,string所指的内存被释放,但是不进行delete,因此不会重复释放。若采用delete,则会重复释放。

这篇关于关于读文件程序编译器报错pointer being free was not allocated的解决思路。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385130

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同