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

Дәріс. Динамикалық жадымен жұмыс істеуге арналған процедуралар мен функциялар. Стандартты процедуралар және функциялармен жұмыс істеу.

Читайте также:
  1. Aуіпсіздік және еңбекті қорғaу бөлімі
  2. А)Өндіріс алаңы және оның тегістеу жұмыстары
  3. Адамдарды көтеруге арналған жүккөтергіш механизмдердің статикалық күштемесінен асуын қаншаға дейін шектейді В) 1,5 есе
  4. Азаматгық қоғам және құқықтық мемлекет
  5. Антидиуреттік гормон, альдостерон және ренин-ангиотензиндік жүйенің, натрий-уретикалық фактордың қызметі.
  6. Аралық аттестацияға арналған сұрақтар
  7. аржы, ақша айналымы және несие » пәнінен емтихан сұрақтары

Барлық динамикалық жады үйме деп аталатын бірыңғай байттар массиві ретінде қарастырылады. Физикалық тұрғыдан алғанда үйме программа денесінен тұратын жады облысынан кейін үлкен адрестерде орналасады. Үйменің басы heaporg стандартты айнымалыда, ал соңы heapend айнымалысында сақталады. Бос емес динамикалық жадының ағымдық шекарасын heapprt көрсеткіші көрсетеді.

Кез келген динамикалық тұрғыда орналасқан айнымалыға жады new процедурасының көмегімен бөлінеді. Бұл процедураға қатынау параметрі болып типтелген көрсеткіш табылады. Қатынау нәтижесінде көрсеткіш мәліметтерді орналастырып бастауға болатын динамикалық адреске сәйкес мәнге ие болады. Көрсеткіш белгілі бір мәнге ие болғаннан кейін, яғни жадының нақты физикалық байтына көрсете бастаса, бұл адрес бойынша сәйкес типтің кез келген мәнін орналастыруға болады. Ол үшін көрсеткіштен кейін «^» белгісі қойылады, мысалы:

I ^: = 2; r ^: = 2*pi;

Динамикалық орналасатын айнымалыға жады “new” стандартты процедура арқылы бөлініп беріледі. Бұл процедураның параметрі ретінде типтелген көрсеткіш қарастырылады. new процедураға қатынас жасағаннан кейін көрсеткіштің мәні болып динамикалық жадының адресі анықталады және осы адрестен бастап мәліметтер орналасады. Көрсеткіш қайсыбір мәнді меншіктегеннен кейін яғни, ол жадының нақты физикалық байтына сілтейтін болады және осы адрес бойынша сәйкес типті кез-келген мәнді орналастыруға болады.

Мысалы: new(pr1);

Динамикалық жадыны босату үшін dispose стандартты процедурасын пайдалануға болады.

Үймеге жадыны динамикалық қайтару үшін dispose(ptr) процедурасы қолданылады. dispose(ptr) процедурасы ptr көрсеткішінің мәнін өзгертпейтінін, бұрын осы көрсеткішпен байланысқан жады үймесін ғана қайтаратынын айта кетуге болады. Бос көрсеткішті nil сөзімен белгілеуге болады.

Үйменің бүтін бөлігін босату үшін динамикалық жадыны бөлуді бастамас бұрын heapprt көрсеткішінің ағымдық мәні mark процедурасының көмегімен айнымалы-көрсеткіште сақталады. Бұдан кейін кез келген уақытта mark процедурасында сақталған адрестен бастап, динамикалық жадының аяғына дейін үйме бөлігін босатуға болады. Ол үшін release процедурасын қолдануға болады, мысалы:

 

var p, p1, p2, p3, p4, p5: ^ integer;

begin

New (p1); new (p2); mark (p); new (p3); new (p4);

New (p5); ------------ release (p);

end.

release процедурасын шақыру осыған дейін dispose процедурасымен құрылған үймедегі бос бөліктер тізімін жоятынын ескерейік, сондықтан бір программаның негізінде жадыны босатудың екі механизмін бірге қолдануға болмайды

Типтелмеген көрсеткіштермен жұмыс жасау үшін келесі процедурулар қолданылады:

GETMEM(P, SIZE) – жадыға орын бөлу;

FREEMEM(P, SIZE) – жадыны босату.

Мұнда Р – типтелмеген көрсеткіш.

SIZE – үйменің босатылған немесе талап етілген бөлігінің байт түріндегі размері.

GETMEM процедурасымен үймеге бір рет қатынағанда 65521 байтқа дейін динамикалық жадыға орын бөле алады. GETMEM – FREEMEM процедураларын қолдану барлық динамикалық жадымен жұмыс жасау тәрізді ерекше ұқыптылықты талап етеді: жадыға қанша орын бөлінсе дәл сондай орын ғана бөліну керек және оған орын бөлінген адрестен бастап қана.

Төменде динамикалық жадымен жұмыс істеу үшін қолданылатын процедуралар мен функциялар келтірілген.

ADDR (X)- Х аргументінің адресін анықтайды.

DISPOSE (TP) – TP типтелген көрсеткіштерге резервтелген динамикалық жадының бөлігін түйдекке қайтару.

FREEMEM (P, SIZE) – байтпен берілген SIZE өлшемді Р типтелмеген көрсеткішке резервтелген түйдек бөлігін босатады

GETMEM (P, SIZE) - байтпен берілген SIZE өлшемді түйдек бөлігін Р типтелмеген көрсеткішке резервтейді.

MARK (PTR) – HEAPPTR түйдегінің көрсеткішінің ағымдағы мәнін еске сақтайды.

MAXAVAIL – ең үлкен үздіксіз түйдек бөлігінің өлшемін байтпен қайтарады.

MEMAVAIL – түйдектің жалпы бос кеңістігінің өлшемін байтпен қайтарады.

NEW (TP) – айнымалы орналастыру үшін ТР типтелген көрсеткіш көмегімен түйдек бөлігін резевтеу.

RELEASE (PTR) – түйдек соңына дейін PTR көрсеткішінде сақталған адрестен түйдек бөлімін босатады.

SIZEOF (X) – көрсетілген объектінің ішкі түсінігінің ұзындығын байт өлшемімен қайтарады.

Негізгі әдебиет: 1[151-156]

Қосымша әдебиет: 5 [28-32], 6 [164-207], 8 [174-176].


Дата добавления: 2015-07-08; просмотров: 1122 | Нарушение авторских прав


Читайте в этой же книге: Пәннің қысқаша мазмұнында | Дәріс. Паскаль тілі туралы негізгі мағлұматтар. Меншіктеу операторы. Шартты оператор. | Дәріс. Қайталану операторлары. | Бүтiн типтегi мәлiметтермен келесi амалдар орындалады | Дәріс. Процедуралар мен функциялар. Қосалқы программаның сипаттамасы. Параметрсіз процедура. Параметрлі процедура | Бақылау сұрақтары | Бақылау сұрақтары | Дәріс. GRAPH стандартты модулін қойлдану | Модульдердi баяндау | Тақырыбы: Формулалар бойынша есептеулер. |
<== предыдущая страница | следующая страница ==>
Көрсеткіштер туралы қысқаша мағлұматтар| Тақырыбы: Арифметикалық операциялар. IF шартты операторы

mybiblioteka.su - 2015-2024 год. (0.01 сек.)