julia> type TestA
a::Int32
b::Int64
end
julia> type TestB
a::Int64
b::Int64
end
julia> sizeof(TestA),sizeof(TestB)
(16,16)
Я исхожу, что sizeof(TestA)
будет 4 + 8 = 12.Принцип двоичного представления типов данных в Julia
Мне любопытно узнать принцип за кулисами.
Почему TestA
и TestB
имеют такой же размер?
пс: http://docs.julialang.org/en/latest/devdocs/object/ хороший материал
Я незнаком с Джулией, но я подозреваю, что это байт. Например, если вы определяете 'struct' в C или C++, который содержит' uint8_t' и 'uint32_t', вы обнаружите, что на большинстве плат требуется 64 байта памяти, если вы не используете директивы, чтобы настаивать на размерах , –
Обходное решение - переопределить Base.size: 'size (x :: TestA) = sizeof (xa) + sizeof (xb)', если вы хотите – Gnimuc
Я не уверен, но я думаю, что @DavidHoelzer прав, поскольку [ документация] (http://docs.julialang.org/en/release-0.4/devdocs/object/#object-allocation) говорит: 'Обратите внимание, что все объекты распределяются в кратных 4 байтах и выравниваются с размером указателя платформы. . Если вам нужны упакованные структуры, вы можете попробовать: [StrPack] (https://github.com/pao/StrPack.jl#strpack-structured-binary-stream-tools) – Gomiero