Etichete: nicio etichetă

Așa cum știm deja, fiecărui program C++ care rulează pe calculator i se alocă trei zone distincte în memoria RAM:

  • zona de date – aici se alocă memorie pentru variabilele globale; acestea sunt inițializate cu 0 și sunt vizibile pe tot parcursul programului, în toate funcțiile definite după declararea acestora
  • zona de date – aici se alocă memorie pentru variabilele locale; acestea nu sunt inițializate cu o anumită valoare și sunt vizibile numai în blocul în care în care au fost declarate; la terminarea execuției acestuia, variabilele declarate sunt eliminate
  • zona liberă(heap) – aici se alocă memorie pentru variabilele dinamice; acestea se creează pe parcursul execuției programului de către programator, nu de la început, și sunt disponibile până la încheierea programului sau până la eliminarea lor explicită, de către programator.

Utilizarea variabilelor dinamice reprezintă o tehnică numită alocare dinamică. Ea se implementează prin intermediul pointer-ilor și are avantajul că folosește doar atâta memorie cât este necesară.

Citește mai departe:

Pointeri. Operații cu pointeri

Memoria RAM este o succesiune de octeți, numerotați. Numărul de ordine al unui octet reprezintă adresa lui și de regulă este reprezentat în baza 16, de exemplu: 0x7fff741e0d74. Orice variabilă ocupă în memorie un număr de octeți consecutivi; adresa primului octet alocat unei variabile reprezintă adresa variabilei. …

Legătura între pointeri și tablouri

Să considerăm declarația int v[11];. Care este efectul acestei instrucțiuni? …

Aritmetica pointerilor

Alături de dereferențiere, pe care o știm deja, asupra pointerilor se pot aplica următoarele operații: incrementarea și decrementarea, adunarea cu un număr întreg, diferența a doi pointeri. Aceste operații sunt utile mai ales când pointerii memorează adrese ale unor elemente dintr-un tablou. …

Mecanismul alocării dinamice

Tehnica alocării dinamice a memoriei se bazează pe utilizarea variabilelor dinamice. Aceste sunt create de programator prin operații explicite, li se alocă memorie în HEAP și sunt eliminate la finalul execuției programului sau explicit de către programator. Pentru a putea fi accesate, adresa lor trebui păstrată într-o variabilă de tip pointer. La rândul ei, aceasta poate fi statică sau dinamică. …