請考慮以下結構:在進程內存中使用boost :: optional是否安全?
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
我使用boost ::進程間創建共享內存區域。我對boost :: optional的理解是它是一個有區別的聯合而不是可空指針。 作爲一個反例,像std :: map和std :: vector這些使用堆的東西需要一個顯式的分配器來在進程間內存中使用它們,但boost :: optional,我確信不會使用堆並且是等價的寫作:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
所以可以開箱即用的。如果有人確認這一點,我會很高興 - 我沒有看到在boost :: optional文檔中明確提到了進程間案例,只是暗示。