Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Alemao1988
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 6
1

Откуда взялись 4 байта

31.10.2017, 16:52. Просмотров 118. Ответов 2
Метки нет (Все метки)

Ребят,привет.У меня вопрос.
Есть простой класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Base {
private:
    int i1;
    double d1;
public:
    Base(int i, double d) : i1(i), d1(d) {
        cout << "Called constructor Base.\n";
        cout << "i1 = " << i1 << endl << "d1 = " << d1 << endl;
    }
 
    virtual ~Base() {
        cout << "Called destructor Base.\n";
    }
};
Когда я хочу посмотреть размер объекта этого класса,то sizeof выдает 24 байта.
Размер int 4 байта,размер double 8 байт,размер указателя на таблицу виртуальных функций 8 байт.Откуда берутся еще 4 байта?)
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2017, 16:52
Ответы с готовыми решениями:

Маска байта
Есть переменная uint8_t, например, uint8_t red;, маска uint32_t, например,...

Размер байта
Есть ли он в std::numeric_limits? Гарантирует ли стандарт какому либо типу...

Чтение байта по адресу
Мне нужно прочитать значение байта по адресу F000:FFFE. Не знаю, как это...

получить 4бит из байта
есть байт, например 32 что написать в структуру что бы прочитать отдельно 3...

UTF-8 признак последнего байта
Есть текст в кодировке UTF-8, этот текст побайтно читается из файла. Надо...

2
artem2302
7 / 7 / 5
Регистрация: 30.09.2014
Сообщений: 92
31.10.2017, 17:03 2
В C++ размер объекта не всегда равен сумме размеров его полей (то же касается структур). Почитайте о выравнивании: https://habrahabr.ru/post/142662/
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4777 / 2434 / 679
Регистрация: 18.10.2014
Сообщений: 4,157
31.10.2017, 18:33 3
Цитата Сообщение от Alemao1988 Посмотреть сообщение
Откуда берутся еще 4 байта?
Просто добавлены для ровного счета - чтобы размер класса делился на 8 и чтобы поле d1 лежало на 8-мибайтовой границе.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2017, 18:33

Четыре байта в один int
У меня есть char bytes = { 0xCF, 0xA1, 0x01, 0x00 }; каким образом я могу,...

Битовое представление каждого байта
Вывести битовое представление каждого байта в интовой переменной. Прошу...

День Святого Байта(задача)
День Святого Байта Тур 2, задача 1 Все очень любят праздники, и жители...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru