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

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

31.10.2017, 16:52. Просмотров 111. Ответов 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 байта?)
Спасибо)
http://www.cyberforum.ru/cpp-beginners/thread609998.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2017, 16:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Откуда взялись 4 байта (C++):

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

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

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

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

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

2
artem2302
7 / 7 / 5
Регистрация: 30.09.2014
Сообщений: 92
31.10.2017, 17:03 #2
В C++ размер объекта не всегда равен сумме размеров его полей (то же касается структур). Почитайте о выравнивании: https://habrahabr.ru/post/142662/
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4371 / 2346 / 654
Регистрация: 18.10.2014
Сообщений: 3,996
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
Привет! Вот еще темы с решениями:

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

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

Вывести шестнадцатеричное представление байта
Ребят помогите в данном задании: Вывести шестнадцатеричное представление байта!

Определение младшего и старшего байта
Всем привет, подскажите пожалуйста, как определить младший и старший байт от...


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

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

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