는 구조체 다음 사항을 고려하십시오 : 나는 공유 메모리 영역을 만들 부스트 :: 간을 사용하고프로세스 메모리에 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 문서에 언급 된 것을 보지 못했습니다. 단지 함축되어 있습니다.