【发布时间】:2017-09-29 00:17:11
【问题描述】:
问题:我想使用内存映射的 HDF5 文件进行单元测试。是否可以从头开始创建它们?
状态:我已经阅读了 HDF5 文件图像操作document,并尝试应用它。根据使用的确切参数,我得到一个无效的文件标识符 (-1),或者随后创建数据集失败。
通常,我们的单元测试会编写新的测试文件,模仿用户将新创建的数据保存到磁盘上的文件。所以还没有一个现有的文件。在阅读 hdf5 文件映像操作的文档时,假设设置了初始文件映像。我没有任何 - 因为我试图通过我的测试尽可能接近实际用户场景。可以从空缓冲区创建这样的文件吗?
static const unsigned int FileSize = 1024 * 1024 * 100;
std::vector<unsigned char> buffer(FileSize, 0); // initialize buffer with zeroes
int flags = H5LT_FILE_IMAGE_DONT_COPY |
H5LT_FILE_IMAGE_OPEN_RW |
H5LT_FILE_IMAGE_DONT_RELEASE;
m_file = H5LTopen_file_image(static_cast<void*>(buffer.data()), buffer.size(), flags);
如果想像示例中那样保留缓冲区的所有权,我没有得到有效的文件 ID。我怀疑 HDF5 中存在错误,但不幸的是留下了标志 H5LT_FILE_IMAGE_DONT_COPY | H5LT_FILE_IMAGE_DONT_RELEASE out 也没有用。
【问题讨论】:
标签: hdf5