Indicatorul indică doar zona de memorie în care este stocată variabila. Această proprietate a pointerului este foarte utilă, dar există încă unul, mult mai des folosit în programare. Indicatorul vă permite să alocați dinamic memoria.
tipurile de date primitive au o anumită dimensiune a memoriei, care diferă numai de varianta platformei.
Îl puteți găsi utilizând funcția sizeof ().
Structurile și clasele, despre care vom vorbi în alte lecții, ocupă aceeași memorie ca toate tipurile de date incluse în câmpurile lor.
Structura memoriei
structura oricărui program compilat este de așa natură încât constă în =
- grămadă
- și restul memoriei, numită o grămadă.
Stack este o structură de date specială destinată accesului rapid la date. Această structură este adesea numită LIFO (Last In First Out) - ultimul care va veni, primul care va pleca. Stiva reprezintă, ca atare, un clip în care este condusă următoarea variabilă în loc de cartuș.
Datorită naturii sale, memoria stack-ului funcționează mult mai repede decât memoria normală.
Un teanc este bun pentru mulți, dar aici are o mică problemă - o cantitate limitată de memorie. Tipurile de date primitive capătă puțină memorie și, prin urmare, punerea lor pe teanc este decizia logică corectă de a accelera programul.
Cu toate acestea, în C ++, precum și în alte limbi compilate, există tipuri greoaie de date de tip =
Variabilele de acest tip pot ocupa zone largi de memorie, ceea ce poate duce la supraîncărcarea stivei și oprirea de urgență a programului dvs.
Acesta este un moment foarte neplăcut în codificare. Pentru a evita o astfel de soartă, a fost inventat conceptul de introducere a unor astfel de tipuri greoaie de date într-o zonă de memorie liberă, numită heap.
Mormântul în știința informatică și programare este numele unei structuri de date care utilizează memoria alocată dinamic al aplicației, precum și cantitatea de memorie rezervată acestei structuri.
De fapt, o grămadă este tot memoria RAM. Gigabyte sau 4 gigaocteți - nu contează. Toate acestea vor fi o grămadă
Ce dă mormanul? Practic o dimensiune mare de memorie, capabilă să găzduiască chiar și cel mai mare tip de date.
Pentru a plasa și a șterge obiecte dinamice, utilizați primitivele "create object" (de exemplu, malloc. New) și "delete object". În plus, înainte de începerea programului, halda este inițializată, în timpul căruia toți cei alocați inițial sub memoria heap sunt marcați ca fiind gratuite.
Atunci când un obiect este plasat, implementarea primitivului "create object" se uită la memoria liberă fără heap în căutarea posibilității de a plasa obiectul cu mărimea necesară în el. Multe implementări ale primitilor de heap pot solicita memorie suplimentară din sistemul de operare, în cazul lipsei de memorie liberă proprie. Dacă, dintr-un motiv sau altul, obiectul nu poate fi plasat, primitivul "create object" indică o eroare