powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / sizeof класса с различным контентом
24 сообщений из 24, страница 1 из 1
sizeof класса с различным контентом
    #34043129
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недавно поднимался вопрос, и был пример наподобии
class MyClass
{
int val;
virtual ~MyClass() {}
};
...
sizeof(MyClass) == 8 // Ладно, пусть еще 4 байта появляются из-за указателя на таблицу виртуальных методов. Почему только, если int заменить на char, sizeof тоже будет 8 (выравнивание по границе слова?)

А вот вопрос:

class AnotherStupidClass
{
static int val;
};
...
int AnotherStupidClass::val = 0;
...
ПОЧЕМУ sizeof(AnotherStupidClass) == 1? Я догадываюсь, что сама статическая переменная размещается при повторном объявлении, выражаясь досовским языком, в DS. Но как указатель в классе может быть всего из 1 байта?
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34043266
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В самом обекте класса неи никакого указателя. Там вообще ничего нет. Но объект класса должен быть размещен в памяти, чтобы было с чем в ссылквх и указателях работать.
А статическая переменная класса дкйствительно болтается в статической области памяти
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34043350
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpace(выравнивание по границе слова?)

Угу. Двойного слова.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34043366
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2blinded: а почему тогда размер 1 байт, а не 0?
2Akh: т.е. 8 байт? но варьируя поля класса, мне попадались и sizeof"ы в 8, 12 байт....
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34043411
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpace2blinded: а почему тогда размер 1 байт, а не 0?


По СТАНДАРТУ, класс не может иметь 0 размер
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34043414
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpace2Akh: т.е. 8 байт? но варьируя поля класса, мне попадались и sizeof"ы в 8, 12 байт....

Слово (WORD) - 2 байта.
Двойное слово (DWORD) - 4.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34045616
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpace
ПОЧЕМУ sizeof(AnotherStupidClass) == 1? Я догадываюсь, что сама статическая переменная размещается при повторном объявлении, выражаясь досовским языком, в DS. Но как указатель в классе может быть всего из 1 байта?

Никакой объект никакого класса не может быть размером 0 байт. Иначе у тебя не будет соблюдаться правило уникальности идентификации каждого объекта в программе (с помощью его адреса). Минимальный размер объекта - один байт.

Это прописано в стандарте и является стандартным и ожидаемым поведением.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34045943
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если пустой класс дополняется идентифицирующим байтом, то благодаря какому механимзу мы можем создавать больше 256 экземпляров класса???
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046201
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты сам тр прнял что сказал? Класс тут вообще не причем, у него - класса размера нет, размер есть только у объекта. Вот создаешь ты в своей программе объект некоторого класса, это объект должен быть расположен в памяти, даже если в нем ничего нет, поскольку язык требует чтобы была возможность создать ссылку на объект некоторого класса и взять его адрес. Сделать этот адрес константным тоже нельзя, поскольку требуется чтобы адреса двкх разных объектов различались. Вот компилятор и клепает объекты размером в 1 байт, меньше не может
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046215
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceЕсли пустой класс дополняется идентифицирующим байтом, то благодаря какому механимзу мы можем создавать больше 256 экземпляров класса???
Идентификация объекта происходит по адресу этого самого байта, а не по самому байту. Читайте внимательнее пост MasterZiv.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046231
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedу него - класса размера нет, размер есть только у объекта.

Определи класс и попроси по нему sizeof
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046258
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceЕсли пустой класс дополняется идентифицирующим байтом, то благодаря какому механимзу мы можем создавать больше 256 экземпляров класса???

Занимающим место.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046481
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. в этот баластный байт ничего не записывается?
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046541
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) blindedу него - класса размера нет, размер есть только у объекта.

Определи класс и попроси по нему sizeof
Не путайте божий дар с яичницей. это будет размер объкта класса.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046637
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceТ.е. в этот баластный байт ничего не записывается?

Во всяком случае, ничего полезного программисту. ;)
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046702
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded Gluk (Kazan) blindedу него - класса размера нет, размер есть только у объекта.

Определи класс и попроси по нему sizeof
Не путайте божий дар с яичницей. это будет размер объкта класса.

не желаю вести пустые теологические споры
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046852
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не дает покоя этот баластный байт ;-)
Простой опыт
class EmptyClass
{
};
EmptyClass obj;
char b = *(char*)&obj; //b == 0
Может и совпадение, а может специально обнуляется..
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046864
Gr4ve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо

sizeof(ClassName) вернет число байт, которые будет занимать в памяти экземпляр класса
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046891
Gr4ve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceНе дает покоя этот баластный байт ;-)
Простой опыт
class EmptyClass
{
};
EmptyClass obj;
char b = *(char*)&obj; //b == 0
Может и совпадение, а может специально обнуляется..

ну правильно, пока вы не вызвали конструктор EmptyClass, obj = NULL, хотя может быть так, что указатель obj разместится в памяти в том месте, где были раньше какие-то данные, и будет не равен NULL, но все равно в таком случае он будет ссылаться на какое-то произвольное место в памяти.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046897
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceНе дает покоя этот баластный байт ;-)
Простой опыт
class EmptyClass
{
};
EmptyClass obj;
char b = *(char*)&obj; //b == 0
Может и совпадение, а может специально обнуляется..

Может кто-то и знает, но толку от этого нет. Врядли вы его будете использовать.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046906
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gr4veимхо

sizeof(ClassName) вернет число байт, которые будет занимать в памяти экземпляр класса

Так и есть.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34046908
Gr4ve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gr4ve TopSpaceНе дает покоя этот баластный байт ;-)
Простой опыт
class EmptyClass
{
};
EmptyClass obj;
char b = *(char*)&obj; //b == 0
Может и совпадение, а может специально обнуляется..

ну правильно, пока вы не вызвали конструктор EmptyClass, obj = NULL, хотя может быть так, что указатель obj разместится в памяти в том месте, где были раньше какие-то данные, и будет не равен NULL, но все равно в таком случае он будет ссылаться на какое-то произвольное место в памяти.

А, нет, сорри, не разглядел

Мой пост не имеет смысла, так как вы объявляете EmptyClass obj, а не EmptyClass *obj.
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34048158
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpace...Может и совпадение, а может специально обнуляется..


немного насторожила данная фраза...
рекомендую считать, что СПЕЦИАЛЬНО НИКТО и НИЧЕГО обнулять НЕ будет !!! Исключением является а) дебаг режим б) секьюрити контент выполнения (после отработки)

(круглый)


2 ALL
Не плохой пример подкинул - столько копий.. А лбы как трещат !!! гы... Мужики, предлагаю за слова не цепляться. Ответы тут прозвучали верные. Одын байи нужён для хоть "чаво та" чтобы отработала правильно аллокация памяти и с указателями мона было оперировать...

предлагаю закрыть данную тему, если принципиальных различий нема... Класс-Объект предлагаю не цепляться. 99% народа тут я думаю понимают разницу и теоретически и практически...
...
Рейтинг: 0 / 0
sizeof класса с различным контентом
    #34048195
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0предлагаю закрыть данную тему, если принципиальных различий нема...

Эх, где там Карабас Барабас? Он бы сейчас сказал, что-нибудь коронное. ;)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / sizeof класса с различным контентом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]