boost::interprocess::shared_memory_object
可以使用默认的构造函数构造,该构造函数将创建一个空的shared_memory_object
(即没有共享的内存)。根据情况,我的代码可能会构造一个shared_memory_object
为空。这意味着有时候我需要检查给定的shared_memory_object
是否为空。
尽管这似乎很容易做到,但是文档中没有任何地方描述如何测试shared_memory_object
的空性!
我看过代码,这表明shared_memory_object::get_name()
在没有关联的共享内存时返回一个空的C字符串,但是似乎无处保证我永远不会得到空的C字符串。共享内存关联时。而且,shared_memory_object::get_size()
即使没有关联的共享内存也可能返回false,即使无法获得大小,因此也无法可靠地使用此方法。
测试shared_memory_object
是否为空的正确方法是什么?