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

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

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

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

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

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

你可能感兴趣的:(代码bug修正,c++,c语言,c++)