0

Linux システムで 2 つの同一のバイナリを同時に実行しています (コマンド ライン引数が異なるため、異なる処理を実行しています)。あるプロセスでは、オブジェクトを共有メモリ領域に memcopy します。別のプロセスで、正しいサイズのオブジェクトを取得し、void*それstatic_castへのポインターを として取得し、元の型のポインターへのポインターを取得します。

これは安全と考えられますか? オブジェクトは必ずしも POD ではありません。

4

2 に答える 2

2

trivially_copyable でないオブジェクトを memcpy できないため、安全ではありません。たとえばstd::vector、 memcopy を呼び出して移動/コピーすることはできず、多くの問題が発生する可能性があります。ただし、オブジェクトを共有メモリ セグメントに構築することはできます。ブーストインタープロセスを見ることを強くお勧めします。使用しなくても、例を見れば何が可能かがわかります: http://www.boost.org/doc/libs/1_63_0/doc/html/interprocess/sharedmemory betweenprocesses.html

于 2018-01-31T02:57:15.307 に答える