【发布时间】:2014-06-07 07:06:10
【问题描述】:
如果一个 HDF5 文件没有用 H5close() 关闭或者 hdfview 无法读取它。在常规应用程序中,HDF5 文件会正确关闭,但有时代码会出现问题(例如段错误)并且文件未关闭。在这些情况下,查看 HDF5 文件中可能包含的内容可能有助于深入了解错误原因。
有没有办法做到这一点?
【问题讨论】:
如果一个 HDF5 文件没有用 H5close() 关闭或者 hdfview 无法读取它。在常规应用程序中,HDF5 文件会正确关闭,但有时代码会出现问题(例如段错误)并且文件未关闭。在这些情况下,查看 HDF5 文件中可能包含的内容可能有助于深入了解错误原因。
有没有办法做到这一点?
【问题讨论】:
您通常可以按照standard RAII (Resource Acquisition is Initialization) paradigm 安全地引用 HDF5 文件异常。但是,这不会保护您免受由操作系统生成的程序中断的段错误,除非您捕获中断并关闭文件。
对于更简单的异常安全情况,这可以通过几个最佳实践来实现。首先,在调用对象构造函数期间获取资源。编写一个复制构造函数并重载赋值运算符以正确转移文件句柄的所有权,而不是简单地从两个位置保存指针。最后,为正确关闭文件句柄的对象编写析构函数。
【讨论】: