我在尝试将结构向量写入文件时遇到问题。写入向量数组时,fwrite失败,并显示无效参数
void Obj::Write(wchar_t const* filename)
{
FILE* file;
errno_t err = _wfopen_s(&file, filename, L"wb");
assert (file && !err);
assert (sizeof(VertexData_VNT) == 32);
assert (vertexArray.size() == 1654);
//unsigned int const vertexCount = vertexArray.size();
//if (fwrite(&vertexCount, sizeof(unsigned int), 1, file) != 1) {
// perror ("fwrite(&vertexCount, ...) error:");
//}
if (fwrite(&vertexArray, sizeof(VertexData_VNT), vertexArray.size(), file) != vertexArray.size()) {
perror ("fwrite(&vertexArray, ...) error:");
}
fclose(file);
}
其中vertexArray定义为:
std::vector<VertexData_VNT> vertexArray;
和VertexData_VNT是仅包含漂浮32字节结构。
大多数情况下,fwrite失败时出现“无效参数”错误,并且什么都不写。虽然有时它可以很好地工作......这对我来说没有意义。
如果我取消注释上面的行,而是在同一个fwrite语句中出现“访问冲突读取位置”异常。它看起来有问题,在fwrite.c,第139行的memcpy。
任何有什么想法?
使用&vetexArray [0]或vertexArray.data()。 &vertexArray是矢量的地址,而不是内部数组。 – hmjd