gpt4 book ai didi

C++ 将指针寻址的 float 保存并加载到二进制文件

转载 作者:行者123 更新时间:2023-11-27 22:35:21 24 4
gpt4 key购买 nike

我正在尝试为动态 float 组 (float*) 创建一个“保存/加载”序列。我有一个数组,将数据保存为 float4 *dst;

我有这段保存数组的代码

int sz = properties.height * properties.width;
float * d_array = (float*)malloc(4 * sizeof(float) * sz);

for (size_t i = 0; i < sz; i++, dst++)
{
d_array[4 * i + 0] = dst->x;
d_array[4 * i + 1] = dst->y;
d_array[4 * i + 2] = dst->z;
d_array[4 * i + 3] = dst->w;
}

// Up to this point, everything works great
ofstream outS(backupdata, ios::out | ios::binary);
outS.write((char *)&d_array, 4 * sz * sizeof(float)); // <- This is where the code breaks
outS.close();

这是我遇到的错误:

Unhandled exception at 0x00007FFDC83316EE (vcruntime140d.dll) in myproject.exe: 0xC0000005: Access violation reading location 0x000000FECA900000.

但是当我从指针错误行中删除 sz 时,它工作正常(虽然显然它没有到达整个数组)

我错过了什么?写入功能是否受内存限制?如果是这样,我该如何解决这个问题?

最佳答案

就这样

outS.write((char *)d_array, 4 * sz * sizeof(float)); 

d_array 取值要保存内容的数组地址

使用 &d_array 你(尝试)保存 d_array 的地址然后是它后面的内存

关于C++ 将指针寻址的 float 保存并加载到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55106214/

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