Размер объекта в куче
От: xexe2  
Дата: 28.10.05 13:12
Оценка:
Уважаемый ол, чему же именно равен размер объекта в куче?
ну вроде и все:)
Re: Размер объекта в куче
От: jazzer Россия Skype: enerjazzer
Дата: 28.10.05 13:16
Оценка: :))) :))) :)
Здравствуйте, xexe2, Вы писали:

X>Уважаемый ол, чему же именно равен размер объекта в куче?


положительному целому
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Размер объекта в куче
От: xexe2  
Дата: 28.10.05 13:22
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, xexe2, Вы писали:


X>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>положительному целому


а поточнее? если учесть поля, функции, и виртуальные функции.
ну вроде и все:)
Re: Размер объекта в куче
От: srggal Украина  
Дата: 28.10.05 13:22
Оценка:
Здравствуйте, xexe2, Вы писали:

X>Уважаемый ол, чему же именно равен размер объекта в куче?


Насколько я ошибусь, предположив, что:
sizeof( Класс объекта в куче )
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 13:23
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, xexe2, Вы писали:


X>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>положительному целому


Неотрицательному целому
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[2]: Размер объекта в куче
От: srggal Украина  
Дата: 28.10.05 13:24
Оценка:
Здравствуйте, srggal, Вы писали:

S>Здравствуйте, xexe2, Вы писали:


X>>Уважаемый ол, чему же именно равен размер объекта в куче?


S>Насколько я ошибусь, предположив, что:

S>
S>sizeof( Класс объекта в куче )
S>

... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: Размер объекта в куче
От: xexe2  
Дата: 28.10.05 13:38
Оценка:
Здравствуйте, crable, Вы писали:

C>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, xexe2, Вы писали:


X>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>положительному целому


C>Неотрицательному целому


тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)
ну вроде и все:)
Re[4]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 13:41
Оценка:
Здравствуйте, xexe2, Вы писали:

X>Здравствуйте, crable, Вы писали:


C>>Здравствуйте, jazzer, Вы писали:


J>>>Здравствуйте, xexe2, Вы писали:


X>>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>>положительному целому


C>>Неотрицательному целому


X>тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)


предположительно:
new T[0];
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[5]: Размер объекта в куче
От: Глеб Алексеев  
Дата: 28.10.05 13:48
Оценка: +2
Здравствуйте, crable, Вы писали:

C>предположительно:

C>new T[0];

Такого не бывает.
Размер бывает нулевым только для пустого базового подобъекта, в виде оптимизации в случаях, когда это допустимо. Для полного объекта размер всегда больше нуля.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 13:54
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Здравствуйте, crable, Вы писали:


C>>предположительно:

C>>new T[0];

ГА>Такого не бывает.

ГА>Размер бывает нулевым только для пустого базового подобъекта, в виде оптимизации в случаях, когда это допустимо. Для полного объекта размер всегда больше нуля.

О, тогда если у объекта в куче есть путой базовый подобъект, то его размер и будет равен 0.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[5]: Размер объекта в куче
От: Аноним  
Дата: 28.10.05 13:59
Оценка:
Здравствуйте, crable, Вы писали:

C>Здравствуйте, xexe2, Вы писали:


X>>Здравствуйте, crable, Вы писали:


C>>>Здравствуйте, jazzer, Вы писали:


J>>>>Здравствуйте, xexe2, Вы писали:


X>>>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>>>положительному целому


C>>>Неотрицательному целому


X>>тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)


C>предположительно:

C>new T[0];

ваше предположение не верно так как sizeof возвращает 1!

ps: vc6
Re[6]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 14:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, crable, Вы писали:


C>>Здравствуйте, xexe2, Вы писали:


X>>>Здравствуйте, crable, Вы писали:


C>>>>Здравствуйте, jazzer, Вы писали:


J>>>>>Здравствуйте, xexe2, Вы писали:


X>>>>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>>>>положительному целому


C>>>>Неотрицательному целому


X>>>тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)


C>>предположительно:

C>>new T[0];

А>ваше предположение не верно так как sizeof возвращает 1!


sizeof чего? без new ты массив нулевой длины не сделаешь, а если через new, то как ты к нему sizeof применишь?

А>ps: vc6
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[7]: Размер объекта в куче
От: Аноним  
Дата: 28.10.05 14:08
Оценка: :)
Здравствуйте, crable, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, crable, Вы писали:


C>>>Здравствуйте, xexe2, Вы писали:


X>>>>Здравствуйте, crable, Вы писали:


C>>>>>Здравствуйте, jazzer, Вы писали:


J>>>>>>Здравствуйте, xexe2, Вы писали:


X>>>>>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>>>>>положительному целому


C>>>>>Неотрицательному целому


X>>>>тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)


C>>>предположительно:

C>>>new T[0];

А>>ваше предположение не верно так как sizeof возвращает 1!


C>sizeof чего? без new ты массив нулевой длины не сделаешь, а если через new, то как ты к нему sizeof применишь?


А>>ps: vc6


sizeof(*(new T[0]))
Re[8]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 14:11
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, crable, Вы писали:


C>>Здравствуйте, Аноним, Вы писали:


А>>>Здравствуйте, crable, Вы писали:


C>>>>Здравствуйте, xexe2, Вы писали:


X>>>>>Здравствуйте, crable, Вы писали:


C>>>>>>Здравствуйте, jazzer, Вы писали:


J>>>>>>>Здравствуйте, xexe2, Вы писали:


X>>>>>>>>Уважаемый ол, чему же именно равен размер объекта в куче?


J>>>>>>>положительному целому


C>>>>>>Неотрицательному целому


X>>>>>тогда уважаемый покажите мне такой объект который равен 0 (неотрицательному целому)


C>>>>предположительно:

C>>>>new T[0];

А>>>ваше предположение не верно так как sizeof возвращает 1!


C>>sizeof чего? без new ты массив нулевой длины не сделаешь, а если через new, то как ты к нему sizeof применишь?


А>>>ps: vc6


А>sizeof(*(new T[0]))


IMHO
sizeof(*(new T[n])) == sizeof(T)
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re[8]: Размер объекта в куче
От: Глеб Алексеев  
Дата: 28.10.05 14:16
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>sizeof(*(new T[0]))

Попробуй sizeof(*(new T[1000000]))
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Размер объекта в куче
От: xexe2  
Дата: 28.10.05 14:16
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Здравствуйте, crable, Вы писали:


C>>предположительно:

C>>new T[0];

ГА>Такого не бывает.

ГА>Размер бывает нулевым только для пустого базового подобъекта, в виде оптимизации в случаях, когда это допустимо. Для полного объекта размер всегда больше нуля.

объясните пожалйста что вы имели ввиду или еще лучше кусочек кода
ну вроде и все:)
Re[9]: Размер объекта в куче
От: Аноним  
Дата: 28.10.05 14:17
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Здравствуйте, <Аноним>, Вы писали:


А>>sizeof(*(new T[0]))

ГА>Попробуй sizeof(*(new T[1000000]))

ну так тоже 1 а мне надо 0.
Re[7]: Размер объекта в куче
От: crable США  
Дата: 28.10.05 14:22
Оценка:
Здравствуйте, xexe2, Вы писали:

X>Здравствуйте, Глеб Алексеев, Вы писали:


ГА>>Здравствуйте, crable, Вы писали:


C>>>предположительно:

C>>>new T[0];

ГА>>Такого не бывает.

ГА>>Размер бывает нулевым только для пустого базового подобъекта, в виде оптимизации в случаях, когда это допустимо. Для полного объекта размер всегда больше нуля.

X>объясните пожалйста что вы имели ввиду или еще лучше кусочек кода


struct Empty {};

struct foo: public Empty // компилятор может не выделять в foo место под Empty
{
    int a;
};

struct bar
{
    Empty e; // здесь место для e выделяется.
};


Правда, я где-то натыкался на информацию о том, что на самом деле выполнять оптимизацию для пустых базовых классов нельзя.
Ну, вроде как, в стандарте ошибка была.
The last good thing written in C was Franz Schubert's Symphony No. 9.
Re: Размер объекта в куче
От: Кодт Россия  
Дата: 28.10.05 14:22
Оценка: 56 (9) +2
Здравствуйте, xexe2, Вы писали:

X>Уважаемый ол, чему же именно равен размер объекта в куче?


Во-первых. Размер объекта всегда равен sizeof(этот_объект), вне зависимости — в куче он, на стеке или статический.
То, что менеджер кучи тратит чуть больше памяти, чем этот sizeof (служебная информация, выравнивание, минимальный размер блока и его гранулярность) — предмет для отдельного разговора.

Во-вторых, размер объекта не может быть нулевым: это нужно для уникальности адресов объектов в массиве. (Как известно, объекты обладают поведением, состоянием и идентичностью; в С++ идентичность обеспечивается уникальными адресами).
Если у объекта есть пустая база, то компилятор может сэкономить и разместить члены объекта, начиная с нулевого смещения.

В-третьих, можно запросить массив нулевого размера на куче: new Type[0]; причём этот массив будет иметь ненулевой указатель.
Зачем так сделано — нужно подумать или порыться в Стандарте.
В С++ есть 3 вида валидных указателей:
— нулевой (нельзя разыменовывать, неприменима адресная арифметика, приводится к false)
— указатель на существующий объект, в т.ч. в составе массива (можно разыменовывать, применима адресная арифметика, приводится к true)
— указатель за концом массива (нельзя разыменовывать, применима адресная арифметика, приводится к true)
new T[0], очевидно, даёт третью разновидность.
Перекуём баги на фичи!
Re[8]: Размер объекта в куче
От: sch  
Дата: 28.10.05 14:26
Оценка: :)))
C>Правда, я где-то натыкался на информацию о том, что на самом деле выполнять оптимизацию для пустых базовых классов нельзя.
C>Ну, вроде как, в стандарте ошибка была.

ААААА!
Я в панике!
Если ты помнишь ссылку или она где-то у тебя осталась, то дай мне ее пожалуйста!
Нам через неделю проект сдавать, а у empty base class optimisation используется очень активно!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.