«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему пустые классы C++ имеют ненулевой размер?

Почему пустые классы C++ имеют ненулевой размер?

Опубликовано 23 ноября 2024 г.
Просматривать:665

Why Do Empty C   Classes Have a Non-Zero Size?

Загадка ненулевого размера пустых классов C

В C может показаться, что пустой класс не будет занимать никакой памяти интуитивный. Однако это предположение подвергается сомнению из-за своеобразного поведения, когда даже классы, лишенные каких-либо членов, имеют ненулевой размер. Почему существует этот очевидный парадокс?

Оказывается, стандарт C явно запрещает объектам и соответствующим им классам иметь нулевой размер. Это условие вытекает из неотъемлемого требования различать отдельные объекты, которые потенциально используют одно и то же пространство памяти.

Стандарт обеспечивает это различие, предписывая, что все классы, независимо от их содержимого, должны иметь минимальный размер, равный единице. Это не позволяет двум разным объектам иметь одинаковые адреса памяти, поскольку такое условие может привести к непредсказуемому и нежелательному поведению.

Следовательно, даже если класс лишен каких-либо определяемых пользователем элементов данных, он по своей сути содержит детали реализации. такие как таблицы виртуальных функций и члены-указатели. Эти важные компоненты увеличивают размер класса, хотя и невидимы для пользователя, поэтому даже пустые классы занимают ненулевой объем памяти.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3