私は現在、このような 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
これはデータセットを含むグループで、 memspacevx
はメモリ内のハイパースラブ、vx_ptr はメモリ内のデータです。このアプローチはうまく機能しますが、後で別のデータ型を使用する必要があるため、データセットから型を直接読み取りたいと考えています。
hid_t datatype;
datatype = H5Dget_type(dataset);
status = H5Dread(dataset, datatype, memspace,H5S_ALL,
H5P_DEFAULT, vx_ptr);
残念ながら、このアプローチは関数で segfault を引き起こしますH5Dread
。多分私は何かを逃していますか?ご提案ありがとうございます。
編集:これが役立つかどうかはわかりませんが、gdb のバックトレースは
0x00007ffff5adbd1e in __memcpy_ssse3_back () from /lib64/libc.so.6
.