“读取字符串的字符时出错”“内存访问失败”,程序员未显式使用new导致对象调用malloc,分配内存后未调用构造函数初始化。

本文探讨了编程中遇到的‘读取字符串的字符时出错’和‘内存访问失败’的问题,原因是程序员在结构体或类对象定义时,仅使用malloc分配内存而未调用构造函数进行初始化。解决方法是显式使用new运算符创建对象,并通过指针操作确保正确初始化。强调了在使用new后要使用指针,并在传递对象时解引用,以防止内存管理问题。
摘要由CSDN通过智能技术生成

调试bug解决篇:“读取字符串的字符时出错”,“内存访问失败”,程序员未显式使用new导致对象调用malloc,分配内存后未调用构造函数初始化。

现象:
在函数里定义了一个对象,但调试时发现里面的string数据中的字符报“读取字符串的字符时出错”,里面的每一个字符的位置上都报“内存访问失败”的字样。(代码bug已修复,故无截图)

原因:
使用结构体变量类型定义一个结构体时,因为工程环境或者其他原因导致编译器对该变量只使用malloc分配内存,没有调用相应的构造函数对内部的数据初始化,比如重要的指针数据,和基于指针的容器数据string或其他容器。

解决方法:
程序员需要显式的使用new构造对象,不管是结构体对象还是类对象,也就是用指针代替值对象。

注意点:
显式使用了new以后就需要用指针指向该内存,所以在使用对象时,为了避免出现意外的只有malloc没有构造的情况,需要使用指针替代值对象,传值的时候只需要将指针解引用就可以。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值