正确,在查找了这个问题之后,我相信是由于我在类定义wchar_t downloadedText[400000];中已经阅读了有关如何使用new运算符分配空间的解决方案的解决方案,即:wchar_t *downloadedText;downloadedText = new wchar_t[400000];
但是,我需要将类的实例写入文件,并且像上面那样分配变量似乎是使用指针指向以未写入我的文件的方式存储的数据。这就是为什么我不能使用std::vector的相同原因。

我读过我可能拥有的另一种选择是,我可以增加“堆栈”的大小。我使用VS2010作为我的IDE,并且位于项目属性>链接器>系统“堆栈提交大小”,“堆栈保留大小”,“堆提交大小”和“堆保留大小”字段中,但是我不确定是否是如何处理我的问题,以及如何正确设置适当的字段。

最佳答案

如果您必须以这种方式执行此操作...则可以在写出对象之后直接显式地编写数组。例如。

write((char*)&myObjects[i]), sizeof(MyClass));
write((char*)downloadedText, sizeof(downloadedText[0]) * 400000);

并读回:
read((char*)&myObjects[i]), sizeof(MyClass));
downloadedText = new wchar_t[400000];
read((char*)downloadedText, sizeof(downloadedText[0]) * 400000);

但是,这非常脆弱并且容易出错。通过读取来覆盖内存中的对象最好是一种不好的形式,除非您使用的是为此目的而明确创建的结构,该结构通常仅包含POD。至少要注意,您必须在读取覆盖它之后设置downloadedText成员字段。

10-06 14:01