我目前尝试从 C 中的 hdf5 数据集中读取一些数据,如下所示。
dataset = H5Dopen(ic_group, 'vx', H5P_DEFAULT);
status = H5Dread(dataset, H5T_NATIVE_FLOAT, memspace,H5S_ALL,
H5P_DEFAULT, vx_ptr);
status = H5Dclose(dataset);
这ic_group
是一个包含数据集的组vx
,memspace 是内存中的 hyperslab,vx_ptr 是内存中的数据。这种方法效果很好,但是由于我想稍后使用不同的数据类型,所以我想直接从数据集中读取类型:
hid_t datatype;
datatype = H5Dget_type(dataset);
status = H5Dread(dataset, datatype, memspace,H5S_ALL,
H5P_DEFAULT, vx_ptr);
不幸的是,这种方法会导致函数中的段错误H5Dread
。也许我错过了什么?感谢您的任何建议。
编辑:我不知道这是否有用,但 gdb 的回溯下降到
0x00007ffff5adbd1e in __memcpy_ssse3_back () from /lib64/libc.so.6
.