我正在运行一个动态分配内存并从 h5 文件加载字符串数组的 c 库。
使用后释放内存时出现错误,我不确定这是Windows问题还是我没有做对。
对于 Windows,我使用 Visual Studio C 编译器 (2019),hdf5 库的版本是 1.12
{
unsigned mode = H5F_ACC_RDONLY;
char file_name[] = "d1.h5";
// assume a priori knowledge of dataset name and size
char dset_name[] = "/group_name/daset_name";
char** elts = calloc(10, sizeof(char*));
hid_t file = H5Fopen(file_name, mode, H5P_DEFAULT));
hid_t dset = H5Dopen2(file, dset_name, H5P_DEFAULT);
hid_t h5_type = H5Tcopy(H5T_C_S1);
herr_t ret = H5Tset_size(h5_type, H5T_VARIABLE);
// read all dataset elements
H5Dread(dset, h5_type, H5S_ALL, H5S_ALL, H5P_DEFAULT, elts);
H5Tclose(dset);
H5Dclose(dset);
H5Fclose(file);
// elts would be something like
// "asdf"
// "asdff"
// "asdfwer"
// "asdfffasdf"
// "asd"
// "asdf"
// "asdff"
// "asdfwer"
// "asdfffasdf"
// "asd"
// do something w/ the dataset elements
// after working free memory
for(size_t i = 0; i < 10; i++) {
free(elts[i]); // fails on this line
}
free(elts); // this line does not fail
}