Cri*_*ina 2 c++ fstream corrupt visual-studio-2010
我正在尝试使用fstream读取二进制文件,我之前在那里写过一些数据.
问题是在到达函数结束后,将显示主题中的消息
代码如下:
ifstream in("contrib.bin", ios::in | ios::binary );
char *nume, dim;
in.read((char*)&dim, sizeof(int));
nume = new char[dim + 1];
in.read(nume, dim);
nume[dim] = '\0';
double imp;
in.read((char*)&imp, sizeof(double));
delete [] nume;
Run Code Online (Sandbox Code Playgroud)
现在,我已完成我的作业并寻找这个问题,但面对它的其他人有数组,而我的变量是一个简单的字符.
有人能指出我正确的方向吗?
sim*_*onc 13
代码
char dim;
in.read((char*)&dim, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
定义一个1字节的字符然后读取sizeof(int)字节(可能大于1).这是无效的,可能会损坏您的堆栈.
如果需要读取sizeof(int)字节,请声明dim为int.否则,将读取的字节数更改为1.最好还是sizeof(dim)确保只读取为存储空间提供的字节数:
in.read((char*)&dim, sizeof(dim));
Run Code Online (Sandbox Code Playgroud)
in.read((char*)&dim, sizeof(int));是不正确的,dim只保留sizeof(char)一个,但你试图读sizeof(int)入它.
此后所有手套都关闭.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |