sizeof(RVALUE)
ruby-core MLで、Symbolオブジェクトと通常のオブジェクトでid値が衝突する可能性があることが話題になり、ruby-core:7447で、akrさんが解決案を示している。
この中でRVALUEのサイズが20byteであるとしているが、実際にはRVALUEのサイズは20byteとは限らないようだ。最近、他のことのために調べた結果は以下のようになっていた。
- Linux version 2.6.11-1, gcc 4.0.0
- RVALUE: 20 byte
- Cygwin, gcc 3.4.4
- RVALUE: 24 byte
- Windows 2000, Microsoft C/C++ Compiler 12.00.8168 for 80x86
- RVALUE: 24 byte
RVALUEのunionの中でRFloatメンバを外すと、全部20byteになる。
まあ、id値衝突の解決案の本質とは、関係のない話。