我正试图从HDF5文件中读取一个向量到Armadillo向量中,但在读取阶段我一直遇到seg错误。我不确定我错过了什么,它看起来很直接,但我想不是。。。如有任何帮助,将不胜感激
int main(void)
{
H5::H5File fid = H5::H5File("element_pattern.h5",H5F_ACC_RDONLY);
H5::DataSet dataset = fid.openDataSet("freq_collect");
H5::DataSpace dataspace = dataset.getSpace();
H5::StrType datatype = dataset.getStrType();
const int rank = dataspace.getSimpleExtentNdims();
hsize_t dims_out[rank];
const int ndims = dataspace.getSimpleExtentDims( dims_out, NULL);
vec freq_collect(zeros<vec>(dims_out[0]));
dataset.read(&freq_collect, datatype, dataspace);
}
解决方案:
&freq_collect
应为freq_collect.memptr()
.memptr()
是指向内存的原始指针,是存储数据的正确方式