是boost映射文件RAII

Are boost mapped files RAII?

本文关键字:RAII 文件 映射 boost      更新时间:2023-10-16

从文档中我可以看出它们不是,另一方面,RAII是现代cpp的特性之一。

http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/mapped_file.html

编辑:事实证明,答案是肯定的,但请不要忘记使用。is_open()。

看一下实现,mapped_source/mapped_sink都包含一个指向底层mapped_file_impl的共享指针(查看这里的mapped_file_impl源)

可以看到,一旦最后一个引用被销毁,它调用析构函数,从映射文件中分离出来。但是,它不会销毁映射文件,正如销毁ofstream不会删除底层文件一样。