@Corray

Какой размер структуры в Go?

Создал две структуры из двух полей: в одной типов int8 и int16, в другой оба int16. При этом экземпляры обеих структур имеют размер 4 байта, хотя размеры полей такие, как надо. Насколько я понимаю, сама по себе структура не весит ничего, размер пустой структуры 0 байт. Так куда же девается 1 байт в первой структуре?
Только начал учить Go, так что не судите за глупые вопросы)
  • Вопрос задан
  • 345 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Это называется выравнивание памяти. На сколько именно выравнивается и чем именно - зависит от многих факторов. ОС, ЯП, процессор и прочее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Как уже отмечалось это alignment и его можно посмотреть функцией unsafe.Alignof() https://pkg.go.dev/unsafe#Alignof
Но не всё потеряно, акробатическими трюками можно бороться за каждый байт) Например:
type s struct {
	x int16
	y int8
	z int8
}

тоже будет занимать 4 байта на распространённых архитектурах. Prooflink https://play.golang.com/p/4AfhDeXDyF-
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы