c++ 从二进制文件里 无法读出数据 并显示到屏幕上,求大神解答

2025-02-25 00:53:31
推荐回答(1个)
回答1:

试一下把生成文件和读取文件的两段代码都开启并运行, 你会发现这个程序不会报错。为什么呢?

string 类并非单纯的char数组,里面有其他C++标准库用来实现string类各种方便功能所需的变量。string类会自己动态分配一块内存用来存储你的信息。这段内存的位置在每次运行程序的时候不同。 你在序列化你的string的时候,他会把string内部记录内存地址变量也序列化。两次运行,如果分配到的动态内存地址不同, 你的ok类在调用destructor的时候就会试图destruct string name, 然而name里面的地址是错误的,所以就会在释放内存的时候出错。