あなたはCでそれを行うことができるかもしれません。しかし、あなたはエイリアシングの問題と未定義の振る舞いを燃やすhunkahunkaに迷い込んでいるでしょう。
また、構造体のパディングはコンパイラー次第であるため、memcpyで取得できるのは、ds.member1 = 0xFF、ds.member2 =メンバー1が4バイトを占めるようにパディングされているため、その時点でスタックにあったジャンクです。または、4バイトの上位2バイトを設定し、下位2バイトにあるため、両方がジャンクになる可能性があります。
あなたがさまよっているのは、コンパイラ/ランタイム固有のメモリレイアウトです。同じことがJavaにも当てはまります。Java自体では、Java以外の恐ろしいことはできませんが、独自のJVMを作成したり、CまたはC ++で作成された既存のJVMをデバッグしたりすると、そのようなことができます。そして、誰が何が起こるかを知っています。私は、JVM仕様がJVM実装をどれだけピン留めするかを正確に知るのに十分なJavaの神ではありませんが、オブジェクトのメモリ内のランタイム表現の相互運用性を有効にするために必要な程度ではないと思います。
したがって、すべての言語フレーバーで未定義の動作が発生します。ミステリーミートのように、各言語でも同じようにおいしいです。