释放由 hdf5 库分配的内存

问题描述 投票:0回答:0

我正在运行一个动态分配内存并从 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

}
c hdf5
© www.soinside.com 2019 - 2024. All rights reserved.