標準によると、typeid演算子は実装依存であるため、別のコンパイラでコンパイルされた他のプロセスによって作成されたオブジェクトで使用するのはナンセンスです。しかし、提供プロセスが同じコンパイラによってコンパイルされる状況はどうですか?同じコンパイラでコンパイルされた別のプロセスから提供されたポインタにtypeidを使用するのは安全ですか?
答えて
異物に検査プロセスのポインタではなく、自身のプロセス空間内にvtableポインタが含まれているため、おそらく動作しません。実行可能なバイナリイメージが実行中のものと同じように配置されているアドレス空間を形成することができれば、それは多分です。同一のコンパイラと同じコマンドラインフラグを使用した場合、またはプラットフォームABIが実行時にtypeid
の動作を正確に指定している場合は、問題ありません。
厳密に言えば、C++オブジェクトモデルは共有メモリに対応していません。プロセス間で送信する前にシリアル化する必要があり、受信側に存在しないC++型を安全にシリアル化する方法はありません。
まあ、私はメモリ共有の問題を考慮しませんでした。すべてのクラスがライブラリで定義されていて、各プロセスの実行可能ファイルがライブラリにリンクされている場合は、両方ともクラス定義があります。それは働くでしょうか? –
@ LiuYongtaiほとんどのOSは、アドレス空間のランダム化を使用して、これが起こらないようにします。問題は、このような戦略は、正当な使用よりも外部アプリケーションの間で広がったり、外部アプリケーションを制御しようとするウイルスにとって、より有用であるということです。 OSを入手して、すべてのプロセスで同じ仮想アドレス範囲にライブラリをロードすることは可能かもしれませんが、これはおそらく良い戦略ではありません。 – Potatoswatter
- 1. Amazon Alexaリクエストで提供されたuserIdでの認証は安全ですか?
- 2. 別のコンパイラでコンパイルされたDLLを使用する
- 3. CookieAuthenticationミドルウェアによって提供されるクッキーは安全ですか?
- 4. wwwフォルダにダウンロードリンクを提供するのは安全ですか
- 5. コピーされたgit repoを使うのは安全ですか?
- 6. 同じアーカイブから開始された他のオブジェクトのメッセージングは本当に安全ですか?
- 7. アップグレードされたコンパイラを使用してアプリケーションを安全にデプロイする方法
- 8. infopathから構築されたシェイプフォームは安全ですか?
- 9. インストールウィザードでユーザーから提供された場所を使用する
- 10. 異なるバージョンでコンパイルされた同じコードは異なる結果を提供します
- 11. スレッドがブロックされたとき。同じプロセスまたはプロセス全体で別のスレッドがブロックされる可能性がありますか?
- 12. これはデータベースアプリケーションにサービスを提供する安全な方法ですか?
- 13. セキュリティ保護されたフォームと同じページにCSRFトークンを生成するのは安全ですか?
- 14. 他のデータと同じデータベースにハッシュされたパスワードを保存することは安全ですか
- 15. C++でCライブラリから返されたポインタを使用する
- 16. 提供されたテストファイルの_userとは何ですか
- 17. 正式なNSは、提供されたドメインと同じにすることはできますか?
- 18. ブロックされたテキストから提供された番号からブロック番号
- 19. アニメーションを提供するBootstrapのような、あらかじめ構築されたクラスは何ですか?
- 20. sbtビルドファイルで "提供された>デフォルト"とは何ですか?
- 21. Apache .htaccess:あらかじめ圧縮された@ font-faceフォントを提供する
- 22. あらかじめ定義された文字列でシェルを呼び出すのは安全ですか?
- 23. 署名されたAmazon s3のURLは安全ですか?
- 24. アレイから提供されたアイテムユーザーを削除する
- 25. Titanium.App.Propertiesに保存された情報は安全ですか?
- 26. FSYaccスレッドで生成されたパーサーは安全ですか?
- 27. ユニットテストフレームワークのセットを同じプロジェクトで使用することは安全ですか?
- 28. ブーストメッセージキューのスレッドは安全でプロセスは安全ですか?
- 29. RequestFactoryで生成されたIDはどのくらい安全ですか?
- 30. ProvidePluginから提供されたモジュールのコンテキストを設定するには?
なぜ型を知る必要がありますか?破損した設計である可能性があります。 –