Bună ziua și bun venit înapoi și aceste alegeri vor să vorbească despre alocarea dinamică a memoriei.
Acest lucru este legat direct de pointerul pe care îl puteți folosi numai pe indicatorul lui.
Deci sa începem.
Deci, ori de câte ori definiți o variabilă în C, compilatorul alocă automat cantitatea corectă de magazine pentru
dvs. pe baza tipului de date.
Am văzut această aruncare.
Atunci când creăm numerele plutitoare duble, nu trebuie să alocăm o nouă memorie.
Compilatorul o face pentru tine.
De fapt, alocă memorie.
Același lucru este valabil și pentru indicatorii.
Apropo, atunci când creați un indicator pointer este alocat pentru tine, astfel încât să stocheze un
pointer tip o adresă.
Acum, asta nu inseamna ca datele pe care memoria este alocata pentru acea adresa pana in acest moment,
ori de cate ori am semnat date catre el pentru a le numi, am atribuit intotdeauna o variabila existenta existenta.
Deci, dacă vrem să alocăm date unui indicator, am folosit adresa ampersand a operatorului pe o
variabilă că variabila are deja memorie alocată pentru aceasta.
Ce-ar fi dacă ați dori să creați un pointer și nu ați dori să-i atribuiți adresa operatorului.
Voi ați alocat dinamic memoria.
Aceasta este întreaga prelegere.
Deci este frugal și de dorit să poți aloca dinamic spațiul de stocare în timp ce rulează un program.
Alocați memoria așa cum aveți nevoie.
Dacă aveți un program care este conceput să citească într-un set de date dintr-un fișier într-un matrice
din memorie, aveți trei opțiuni.
Puteți defini matricea să conțină numărul maxim de elemente posibile la timpul de compilare.
E o dimensiune fixă.
Dacă definiți matricea are 50 de elemente, va conține doar 50 de elemente.
Compilatorul determină că este de 50 de ani.
Va aloca atât de multă memorie atunci când dorește.
Puteți utiliza o lungime variabilă la dimensiunea dimensiunii matricei în timpul rulării.
Am vorbit puțin despre aceste matrice cu lungime variabilă.
Nu sunt acceptate până la 11 ani.
Sunt luați de fapt.
Cei 11 acolo și vezi nouăzeci și nouă.
Aici puteți introduce variabile, dar acestea sunt încă un fel de dimensiune fixă ​​deoarece tot ceea ce
înseamnă variabila este res tot ce înseamnă că puteți trece și variabilele pentru dimensiuni, dar ele sunt încă statice sau cea mai
bună alegere este că puteți aloca array dinamic în timp ce aveți nevoie și există funcții diferite pe care le
puteți apela pentru a face acest lucru.
Deci va fi foarte util să puteți aloca dinamic memoria.
Deci, cu prima abordare corectă pe care am făcut-o până acum, indiferent dacă este vorba despre un tablou sau dacă
este vorba de un tip de date, este o dimensiune fixă, trebuie să definiți matricea dvs. pentru a conține numărul maxim de elemente
care se vor afla direct în o matrice.
Deci ai face ceva de genul asta în date sau o mie.
Ceea ce înseamnă însă că fișierul de date nu poate conține mai mult de 1000 de elemente.
Dacă programul tău se va sparge.
Deci, trebuie doar să speri că ceea ce urmați să citiți nu are atât de mult, nu
are prea multe date.
Programul dvs. nu va funcționa cu seturi mari de fișiere sau fișiere mari.
Și dacă vrei să funcționeze cu fișiere mari, trebuie să te întorci și trebuie să faci matricea mai mare.
Trebuie să modificați mărimea.
Dar atunci trebuie să o recompilați în toate chestiile astea.
Este timpul de compilare, indiferent de valoarea pe care o selectați, aveți întotdeauna șansa
de a rula în aceeași problemă din nou, deoarece este o dimensiune fixă ​​pe care dimensiunea este determinată atunci când compilați codul.
Nu se întâmplă atunci când executați programul nu se modifică dinamic utilizând funcția de alocare a memoriei dinamice.
Puteți obține spațiul de stocare în timp ce aveți nevoie de el.
Această abordare vă permite să alocați memoria așa cum se execută programul, deci gândiți-vă la
avantajele acestui drept.
În primul rând, nu creați o tonă de memorie pe care ați putea să o utilizați acum.
Voi creați doar ceea ce aveți nevoie.
Și dacă aveți nevoie de mai mult, puteți aloca mai multe.
Nu doriți să vă întoarceți și să recompilați și să schimbați adolescenții de dimensiune, astfel încât alocarea de memorie dinamică
este calea de urmat.
Depinde de conceptul de pointer și oferă un stimulent puternic pentru a utiliza indicii în codul dvs.
Așa că am vorbit despre avantajele indicatorilor și s-ar fi putut gândi la tine. Ei bine, există concepte
reci, dar de ce trebuie să le folosim.
Acesta este unul dintre motivele mari, astfel încât să puteți aloca dinamic memoria.
Și din nou, ce înseamnă acest lucru despre a fi un limbaj eficient și care nu utilizează o tonă de memorie.
Deci, C rulează pe sistemele încorporate de programare în timp real și acesta este unul dintre motivele pentru care.
Deoarece puteți limita cantitatea de memorie utilizată în funcție de necesitate.
Deci, alocarea dinamică a memoriei permite memorarea dinamică a memoriei pentru stocarea datelor dinamice
atunci când programul execută dinamic alocarea memoriei este posibilă numai pentru că aveți indicatori disponibili deoarece aveți
o adresă și puteți schimba cât indică indicatorul.
Puteți readapta memoria.
Majoritatea programelor de producție vor utiliza alocarea dinamică a memoriei.
Dacă scrieți un cod în C, veți folosi acest lucru chiar dacă sunteți începător.
Veți utiliza alocarea de memorie dinamică, cele mai utile programe vor folosi acest concept de alocare a datelor dinamic Olajide pentru a
crea pointeri la timpul de execuție care sunt suficient de mari pentru a păstra cantitatea
de date necesare pentru sarcină.
Deci nu pierzi vitalitatea memoriei.
De asemenea, trebuie să vorbim despre halda versus stack.
Există două moduri în care puteți memora memoria într-un program în diferite structuri de date.
Puteți să stocați date în stiva unde puteți stoca date din alocarea
dinamică a memoriei haldei.
Nu vom merge în detaliu despre modul în care sunt organizate, dar, în esență, păstrează permise halda
atunci când stocați datele pe heap, permite mai multă schimbare.
Puteți modifica în mod arbitrar mărimea obiectelor de date într-un stick în jurul mult mai mult.
Când alocați stick-uri de memorie în jurul întregului program atunci când utilizați o stivă, este mai limitat că stiva este folosită
pentru totul, de la argumentele funcțiilor și variabilele locale.
Aici sunt stocate toate acestea.
De aceea am discutat despre stackul de apeluri.
Sa uitat la metodele corecte și funcțiile pe care ar trebui să le spun.
Folosesc metodele din când în când, dar pentru metode este într-adevăr un obiect orientat.
Deci, funcțiile legate de funcții sunt create pe stivă.
Deci, ce înseamnă asta atunci când executați o funcție devine pus pe stivă.
Variabilele locale se pun pe stivă atunci când ieșiți din funcție.
Totul se șterge, o anumită memorie situată pe stivă nu rămâne prea lungă.
Acesta este unul dintre motivele în care alocați dinamic memoria pe halda deoarece
o să o utilizați.
Controlezi când o folosești și atunci când nu o folosiți, o alofici și o ștergi.
Obiecte pe stivă.
Nu-l controlezi automat devine șters automat devine alocat.
Deci variabilele locale variabile în interiorul funcțiilor ca principalele sunt create pe stivă și așa mai departe.
Memoria de pe morman este diferită, este controlată de tine, programatorul.
Atunci când alocați memorie pe heap, depinde de tine să țineți evidența când adăugați memoria pe care ați
alocat-o nu mai este necesară.
Trebuie să ștergeți memoria pe care trebuie să o eliberați atunci când nu mai este utilizată de dvs.
Și acest lucru este important pentru că memoria este foarte redusă.
Astăzi avem o mulțime de memorie pe care o puteți rula pe un computer pe care îl cunoașteți 12 concerte 16 concerte indiferent de ce este.
Dar pentru programele care sunt încorporate care rulează pe dispozitive nu aveți atât de multă memorie în mod necesar Și astfel doriți să
controlați cât de mult utilizează memoria și de asemenea doriți să eliberați memoria când ați terminat folosirea
acesteia.
Deci, alte aplicații pot folosi.
Din nou, mai important decât sistemele de nivel scăzut și de tip mai bun.
Dar aceasta este o libertate pe care multe limbi nu au această capacitate de
a-ți controla gestionarea memoriei de către programator și poate face programul mult mai eficient și mult mai rapid.
Deci, în următoarea conferință vom vorbi despre cum puteți face acest lucru.
Ce funcție puteți evoca.
Evident, există diferite funcții pe care le puteți apela pentru a aloca memoria în memoria liberă.
Mulțumesc.