gpt4 book ai didi

c++ - 变量 'dim'(不是数组)周围的堆栈已损坏

转载 作者:太空狗 更新时间:2023-10-29 23:22:08 25 4
gpt4 key购买 nike

我正在尝试使用 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;

现在,我已经完成了作业并寻找了这个问题,但是遇到它的其他人有数组,而我的变量是一个简单的字符。

有人能给我指出正确的方向吗?

最佳答案

代码

char dim;
in.read((char*)&dim, sizeof(int));

定义一个 1 字节的字符,然后将 sizeof(int) 字节(可能大于 1)读入其中。这是无效的,可能会损坏您的堆栈。

如果您需要读取sizeof(int) 字节,请将dim 声明为int。否则,将您读取的字节数更改为 1。最好您还使用 sizeof(dim) 来确保您只读取与您提供的存储一样多的字节数:

in.read((char*)&dim, sizeof(dim));

关于c++ - 变量 'dim'(不是数组)周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com