Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Жалпы ақпарат






Windows ОЖ-сі жадымен жұ мыс істеу механизмдерін келесідей іске асырады:

1) виртуал жады ү лкен массивтер жә не «структуралармен» жұ мыс ү шін;

2) проекциаланатын файлдар ү лкен мә ліметтер ағ ынымен (ә детте) жұ мыс ү шін жә не бір компьютерде мә ліметтерді бірнеше процестердің бірге қ олдануы ү шін;

3) «куча» – кіші объектілер жиынымен жұ мыс ү шін.

10.2.1 Динамикалық таратылатын жады. «Куча».

Виртуалды жадыны қ олдану барлық кезде ың ғ айлы емес. Мысалы, байланысқ ан тізімдер мен ағ аштарды «кучаны» қ олданып ө ң деген жең ілірек. Динамикалық таратылатын жадының артық шылығ ы – ол жадыны бө лу ұ сақ тығ ын, парақ тар кө лемін елемеу. Ал кемшілігі жады блоктарын босату, бө лу аз жылдамдық пен орындалады.

«Куча» – адрестік кең істіктен орын алып қ ойғ ан (резервтелген) бө лім. Программаның мә ліметтер ү шін жады облысын алу барысына қ арай «кучаны» басқ аратын арнайы қ адағ алаушы (heap manager) парақ тық файлдан парақ -парақ пен оғ ан физикалық жадыны беріп отырады. Блоктар босағ анда кучаны қ адағ алаушы жү йеге физикалық жадының сә йкес беттерін қ айтарып береді.

С++ ү шін негізгі жадыда ақ паратты сақ таудың екі ә дісі бар:

1) айнымалыларды қ олдану. Айнымалыларғ а берілетін жады облысы «компиляция» кезінде соларғ а тіркеледі де программаны орындау кезінде ө згертілмейді;

2) жадыны динамикалық тарату жү йесін қ олдану. Бұ л жағ дайда біздің программа жә не стек арасында орналасқ ан бос жадыдан мә ліметтерге жады қ ажеттілік туындағ анда ғ ана беріледі. Бұ л бө лім «куча» деп аталады.

Жадыны динамикалық тарату жү йесі – бұ л программа орындалу кезінде қ андай да бір жады облысын алу қ ұ ралы.

Жадыны динамикалық беру дегеніміз – жадыны программа орындалуы кезінде алу, яғ ни оның орындалуы кезінде айнымалылар қ ұ руғ а болады. Жадыны динамикалық тү рде беруге келген сұ ранысты қ анағ аттандыру ү шін «куча» қ олданылады.

адрестердің жоғ арғ ы облысы Стек
  Куча
  Глобалды мә ліметтер
адрестердің тө менгі облысы Программа коды

10.1 сурет – Жады облыстарындағ ы бө лімдердің орналасуы

С++ тілінде жадыны бө летін жә не босататын екі оператор бар new жә не delete. New операторы жады облысын динамикалық бө леді. Delete операторы бұ рын бө лінген динамикалық жадыны босатады.

айнымалы-сілтеуіш = new айнымалы типі;

delete айнымалы-сілтеуіш;

Мысал 10.1 – Программада new жә не delete операторын қ олдану.

#include< iostream.h>

void main()

{int *p;

p=new int; // жадыны бө лу

*p=55; // сол облысқ а 55 орнату

cout< < *p< < endl; // экранғ а шығ ару

delete p; } // жадыны босату

 

Мысал 10.2 – Динамикалық беретін жадыны инициализациялау.

#include< iostream.h>

void main()

{int *p;

p=new int (345); // жадыны инициализациялау

cout< < *p< < endl;

delete p; }

Мысал 10.3 – Жадыны массивтерге ерекшелеп беру.

//dinamic memory for odnomerny massiv

#include< iostream.h>

void main()

{int *p; int i;

p=new int [10]; // массивтің 10-элементіне жады

for(i=0; i< 10; i++) p[i]=10+i; // массивті толтыру

for(i=0; i< 10; i++) cout< < p[i]< < " "; // массивті экранғ а шығ ару

cout< < endl;

delete []p; } // массивті жою

 

Динамикалық массивті қ ұ рудың бірнеше тү рі бар. Ең ың ғ айлысы – массивтің екі ө лшемі де программаны орындау барысында берілгені.

Мысал 10.4 – Екіө лшемді динамикалық массивті қ ұ рудың бір тү рі.

//dinamic memory for 2-merny massiv

#include< iostream.h>

void main()

{ int nrow, ncol, i, j;

cout< < " enter count rows and columns" < < endl;

cin> > nrow> > ncol;

int**a=new int *[nrow];

for(i=0; i< nrow; i++)

a[i]=new int[ncol];

for(i=0; i< nrow; i++)

for(j=0; j< ncol; j++)

cin> > a[i][j];

for(i=0; i< nrow; i++){

for(j=0; j< ncol; j++)

cout< < a[i][j]< < " ";

cout< < endl; }

cout< < endl; }






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.