Grea

  • 02 дек. 2012 г.
  • 2482 Слова
Объектно-ориентированное программирование
Лекция 1

Раздел I Динамические переменные. Динамические структуры.

§1.1 Распределение памяти

ОЗУ – Оперативное Запоминающее Устройство для хранения данных исполняемой программы и самой программы.

совокупность элементарных ячеек (элементарная ячейка - 1байт)

условно:
1 2 3 4





4. Глобальныепеременные и константы
Память под них выделяется на этапе компиляции программы.

3. СТЕК
Хранит локальные переменные и параметры, которые загружаются в момент активизации соответствующего блока программы.
(когда программа отработала, то память, СТЕК, освобождается)

2. Свободная область (англ. heap - куча)
Хранит динамические переменные.
(ни размер, ни тип, заранее, у этих динамическихпеременных не известен)


Каждая переменная (точнее первый байт памяти) имеет свой адрес.

int




адрес первого байта

Вся память, условно делится на сегменты.
Чтобы указать адрес, нужно указать сегмент + смещение
16 раз. 16 раз.

адрес - 32 разряда

Адрес состоит из двух, 16-ти разрядных слов.
1-сегмент
2-смещение


перевод 23 22 21 208 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
1011 0111 0101 0010 = B75216
B 7 5 2

0 |_________
_ _ _ _ 1 |_________
_ _ _ _ 20|_________
31|_________
4 |_________
5 |_________
6 |_________

0000 0000 0000 0010:
0000 0000 0000 0011

Минимально возможноесмещение: 000016
Максимально возможное смещение: FFFF16

65536 32768 16384 8192 4096 2048 1024 512   256 128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12 =


= 6553510


65535 байт = 64 КбайтАдресация динамических переменных осуществляется через указатели.
Указатель занимает: 32 разряда; 4 байта.

Указатель – это переменная, которая содержит адрес другой переменной (это ссылка на некоторый объект).
Сам указатель – СТАТИЧЕСКАЯ переменная; а на то, что указывается – любая (статическая или динамичская).
А переменная, расположенная в динамически распределенной области, на которуюуказывает указатель, называют динамической переменной.
Под указатель компилятор отводит память области данных.

Почему стали использовать указатели:
- Работа с большими объёмами данных
- Работа с данными неизвестного размера
- Использование временных буферов данных
- Использование в программах связных списков и других структур

Объявление указателя
тип *

тип – это тип объекта, на которыйуказывает указатель

* – указывает на то, что следует за ней переменная, является указателем

char * ch
int * a, z, y;

Указатель хранит адрес первого байта памяти, поэтому в объявлении указателя важен базовый тип.

Операции на указатели.
С указателями связаны 2 специальные операции: & и *
взятие адреса и разыменование
& - взять адрес
* - операция разыменования(извлечение содержимого переменной, на которую указывает указатель)


int x; p x

int *p

p=&x

*p=x

x







p *p





Занесение данных

int *p1, *p2

* p1 = 2

* p2 = 4

область данных свободная область памяти,
выделяется в процессеp1 * p1 работы программы





p2 * p2





Копирование данных

* p1 = * p2

p1 * p1 (сравним)

* p1 = = * p2

p1 = p2 (?!)...
tracking img