Answer the question
In order to leave comments, you need to log in
How many bytes should the object take?
There is a class
class where
{
char charray[10];
public:
void reveal()
{ cout << "\nМой адрес - " << this; }
};
Answer the question
In order to leave comments, you need to log in
It seems that the difference between the addresses should be 10 units
Процессору удобнее (ну, инженерам было удобнее спроектировать такое), когда данные выровнены в памяти. Поэтому компилятор дополняет структуры ничего не значащими байтами (padding). Да, это перерасход оперативки, но в обмен на скорость. Память нынче дешевле скорости.
Выравнивание тут, скорее всего, не при чём. 10 байт занимают данные и 4 байта - указатель на функцию reveal(). И полагаю, что вы не создаёте объекты динамически, иначе добавлялось бы ещё 8 байт - 4 для размера выделенного блока памяти и 4 для указателя на следующий выделенный блок.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question