Зворотний зв'язок

Використання вільної пам'яті

p : array[ 0..9 ]of pointer; num : Longint =10000.

Після встановлення вказівників на 10 ділянок

for cnt:=0 to 9 do getmem(p[cnt], num*sizeof(Longint))

елемент масиву з індексом k, де 0 k 9, задається виразом

Parl(p[k div num])^[k mod num].

І навпаки, вираз Parl(p[i])^[j] задає елемент масиву з індексом num*(i-1)+j.

Приклад. Наведемо програму, за якою створюється масив із 135 тисяч елементів типу LongInt, тобто по 4 байти. Елементам присвоюються їх порядкові номери. Далі друкуються значення тих елементів, номери яких кратні 4000, а також восьми останніх. Перед захопленням пам'яті та після нього друкуються загальний розмір незайнятої частини купи та найбільший розмір її суцільної незайнятої ділянки. Якщо за якихось причин виконання програми завершується аварійно, слід придивитися саме до останніх величин.

program arrptrfr;

const blocks=9;

type lng=longint; arl=array[0..0]of lng; parl=^arl;

var p : array[0..blocks-1]of pointer;

num, glob : lng ; k : lng; cnt: integer;

begin

num:=15000; glob:=num*blocks;

writeln( 'вільна пам''ять : ', memavail,

'; найбільша ділянка : ', maxavail);

for cnt:=0 to blocks-1 do getmem(p[cnt], num*sizeof(lng));

for k:=0 to glob-1 do

parl(p[k div num])^[k mod num]:=k;

cnt:=0;for k:=0 to glob-1 do

begin

if (k mod 4000 = 0) or (k>glob-1-8) then

begin

write(k:8, parl(p[k div num])^[k mod num]:8);


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат