gpt4 book ai didi

c++ - 复制存储在内存映射文件中的数组的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:36 27 4
gpt4 key购买 nike

我有一个存储在内存映射文件中的 double 组,我想读取该数组的最后 3 个条目(或与此相关的任意条目)。

可以将存储在 MMF 中的整个数组复制到辅助数组:

void ReadDataArrayToMMF(double* dataArray, int arrayLength, LPCTSTR* pBufPTR)
{
CopyMemory(dataArray, (PVOID)*pBufPTR, sizeof(double)*arrayLength);
}

并使用所需的条目,但这意味着只为实际需要的几个值复制整个数组。

我可以将 arrayLength 缩小到某个数字 n 以获得第一个 n 条目,但是我在复制不是从第一个条目开始的数组的一部分。我尝试使用 pBufPTR 指针,但只能得到运行时错误。

关于如何从数组中间访问/复制内存而不需要复制整个数组的任何想法?

最佳答案

查找第 n 个元素的起始偏移量:

const double *offset = reinterpret_cast<const double*>( *pBufPTR ) + n;

复制最后 3 个元素:

CopyMemory( dataArray, reinterpret_cast<const double*>( *pBufPTR ) + arrayLength - 3, 3 * sizeof(double) );

关于c++ - 复制存储在内存映射文件中的数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824005/

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