Размещение обьекта в памяти
От: Аноним  
Дата: 26.06.04 06:30
Оценка:
Сосбвенно вопрос в следующем:

class Collection
{
   Class1 member1;
   Class2 member2;
   ...
}

Collection col1

будут ли member1 и member2
находится в участке памяти выделеному Collection
т.е.
(char*)col1.member1 >= (char*)col1 && (char*)col1.member1 <= ((char*)col1+sizeof(col1))
Re: Размещение обьекта в памяти
От: Аноним  
Дата: 26.06.04 06:49
Оценка:
Collection это класс. Говорить что член располагается в участке памяти, выделенным под класс — некорректно. Память выделена под объект класса. У тебя есть объект col1. Память выделится под него — т.е. под составляющие его члены member1 и member2. Если члены не разделены спецификатором доступа, то тогда сначала будет идти member1, потом member2 (не будем про выравнивание — сейчас это несущественно).

clas A
{
   int i_;
public:
   char c_;
};


А вот здесь нет гарантии, что адрес i_ будет меньше адреса c_, но только вот во всех известных мне реализациях это все же именно так.
Re[2]: Размещение обьекта в памяти
От: Аноним  
Дата: 26.06.04 06:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Collection это класс. Говорить что член располагается в участке памяти, выделенным под класс — некорректно. Память выделена под объект класса. У тебя есть объект col1. Память выделится под него — т.е. под составляющие его члены member1 и member2. Если члены не разделены спецификатором доступа, то тогда сначала будет идти member1, потом member2 (не будем про выравнивание — сейчас это несущественно).

ну я имел ввиду обьект


т.е. выражение

(char*)col1.member1 >= (char*)col1 && (char*)col1.member1 <= ((char*)col1+sizeof(col1))


справедливо, не зависит от спецификатора доступа?
Re[3]: Размещение обьекта в памяти
От: Аноним  
Дата: 26.06.04 07:14
Оценка:
А>т.е. выражение

А>
А>(char*)col1.member1 >= (char*)col1 && (char*)col1.member1 <= ((char*)col1+sizeof(col1))
А>


А>справедливо, не зависит от спецификатора доступа?


Начнем с того, что это выражение неверно. что такое (char *)col1.member ?
Re: Размещение обьекта в памяти
От: _nn_ www.nemerleweb.com
Дата: 26.06.04 07:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сосбвенно вопрос в следующем:


А>
А>class Collection
А>{
А>   Class1 member1;
А>   Class2 member2;
А>   ...
А>}

А>Collection col1
А>

А>будут ли member1 и member2
А>находится в участке памяти выделеному Collection
А>т.е.
А>
А>(char*)&col1.member1 >= (char*)&col1 && (char*)&col1.member1 <= ((char*)&col1+sizeof(col1))
А>


Да, размер Collection зависит от того что в нем находится.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Размещение обьекта в памяти
От: Аноним  
Дата: 26.06.04 07:24
Оценка:
Здравствуйте, _nn_, Вы писали:


А>>
А>>(char*)&col1.member1 >= (char*)&col1 && (char*)&col1.member1 <= ((char*)&col1+sizeof(col1))
А>>


__>Да, размер Collection зависит от того что в нем находится.


Спасибо а то а про & забыл
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.