Julia中数据类型二进制表示的原理

Lan*_*Guo 2 julia

julia> type TestA
       a::Int32
       b::Int64
       end
julia> type TestB
       a::Int64
       b::Int64
       end

julia> sizeof(TestA),sizeof(TestB)
(16,16)
Run Code Online (Sandbox Code Playgroud)

我被证实sizeof(TestA)将是4 + 8 = 12.


我很好奇幕后的原理.

为什么TestA和TestB大小相同?

ps:http://docs.julialang.org/en/latest/devdocs/object/是一个很好的材料

Dav*_*zer 7

字节对齐就是答案.文件指出:

请注意,所有对象都以4个字节的倍数分配,并与平台指针大小对齐.

  • 通常,Julia会尝试匹配C结构对齐规则,以便您可以在Julia中镜像C结构并来回传递值. (4认同)