• Почему bool весит целый байт?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Предыдущие ораторы ( @batChar @gleb_kudr ) говорили про адресацию памяти. Я думаю, что они неправы: у нас, например, есть битовые поля, которые, по определению, могут быть отдельными битами, не смотря на то, что "байт - минимальная единица адресации в памяти". Невозможность адресовать отдельные биты памяти -- не основная причина.

    Проблема не в адресации, а скорее в стандарте: если посмотреть определение оператора sizeof (ISO/IEC 14882:1998, п.5.3.3), то стандарт запрещает применять его к битовым полям, но разрешает к типу bool (говоря, что результат, кстати, не обязан быть равен 1). А поскольку sizeof возвращает размер объекта в байтах, а конеченые объекты должны иметь ненулевой размер, то и размер bool должен быть не меньше байта.

    Я думаю, что стандарт вполне мог бы запретить применять sizeof к bool и разрешить паковать значения bool, но не сделал этого, т.к. это, скорее всего, неэффективно.

    С другой стороны, у std::vector есть специализация std::vector<bool>, "булевский вектор", которая обычно требует меньше памяти, чем массив значений типа bool.
    Ответ написан
    4 комментария
  • Можно ли реализовать в notepad рабочую область в две и более колонок (примерно как в ST Vievs -> layout -> Columns:2)?

    leonid-lapidus
    @leonid-lapidus
    Если я верно понял вопрос:
    - правый клик по вкладке с именем файла
    - пункт меню: переместить в другое окно
    Ответ написан
    1 комментарий