Pointeri și memorie dinamică

Subiecte de discuție. Structuri de date dinamice24

Toate variabilele declarate în program sunt plasate într-o zonă continuă a memoriei principale, care se numește segmentul de date. Variabilele locale sunt plasate pe stivă.

Memoria dinamică este memoria de operare PC furnizată programului în timpul funcționării sale, minus segmentul de date, stiva și corpul programului în sine. Toată memoria dinamică din Object Pascal este tratată ca o matrice solidă de octeți, numită heap.

Alocarea statică este realizată de compilatorul Turbo / Object Pascal în timpul compilării programului.

Plasarea dinamică a datelor înseamnă utilizarea directă a memoriei dinamice atunci când programul este în desfășurare. În cazul alocării dinamice, nici tipul, nici cantitatea de date care sunt plasate nu sunt cunoscute în avans.

Structurile de date dinamice sunt cele a căror dimensiune nu este cunoscută în prealabil sau este modificată în prealabil și / sau pentru care spațiul din memoria calculatorului este alocat în timpul execuției programului.

Pascal furnizează programatorului un instrument flexibil pentru gestionarea memoriei dinamice - așa-numitele pointeri.

Pointeri și memorie dinamică

Fig.1. Structura de date listată

În Turbo Pascal, puteți declara un pointer și nu îl asociați cu niciun tip particular de date. Pentru aceasta, utilizați tipul POINTER standard, de exemplu:

Pointeri de acest fel vor fi numiți uniti. Deoarece indicatorii netratați nu sunt asociați cu un anumit tip, aceștia sunt folositori pentru plasarea dinamică a datelor a căror structură și tip se schimbă în timpul programului.

este destul de acceptabilă, în timp ce

Este interzis deoarece P1 și P3 indică diferite tipuri de date. Această restricție, cu toate acestea, nu se aplică pentru indicatorii uniti, astfel încât să putem scrie

și astfel să obțină rezultatul dorit.

Cititorul are dreptul să întrebe dacă merită să introducă restricții și să ofere imediat mijloace pentru eludarea lor. Problema este că orice restricție, pe de o parte, este introdusă pentru a spori fiabilitatea programelor și, pe de altă parte, reduce puterea limbii, făcând-o mai puțin potrivită pentru unele aplicații. În Turbo Pascal, câteva excepții pentru tipurile de date dau limbii flexibilitatea necesară, dar utilizarea lor necesită efort suplimentar din partea programatorului și astfel indică o acțiune pe deplin conștientă.

Articole similare