は、構造体以下の点を考慮してください:私は、共有メモリ領域を作成するために、ブースト::プロセス間を使用していプロセス間メモリにboost :: optionalを使用するのは安全ですか?
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
。 boost :: optionalの理解は、nullableポインタではなく、区別されたunionであるということでした。 ヒープを使用するstd :: mapやstd :: vectorのようなものは、プロセス間メモリで使用するために明示的なアロケータを必要としますが、boost :: optionalではヒープを使用しないことがわかりました。書面:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
したがって、そのまま使用することができます。もし誰かがこれを確認したら、私はうれしく思います。私は、プロセスの事例がboost :: optional docsに明示されているのを見ていませんでした。