Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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; }





Дата публикования: 2015-10-09; Прочитано: 713 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...