Conceptul de alocarea dinamică a memoriei în limbajul c permite programatorului C să aloce memorie în timpul rulării . Alocarea dinamică a memoriei în limbajul c este posibilă prin 4 funcții ale fișierului antet stdlib.h.
- malloc()
- calloc()
- realloc()
- gratuit()
Înainte de a învăța funcțiile de mai sus, să înțelegem diferența dintre alocarea de memorie statică și alocarea de memorie dinamică.
alocare de memorie statică | alocarea memoriei dinamice |
---|---|
memoria este alocată în timpul compilării. | memoria este alocată în timpul rulării. |
memoria nu poate fi mărită în timpul executării programului. | memoria poate fi mărită în timpul executării programului. |
folosit în matrice. | utilizat în lista legată. |
Acum să aruncăm o privire rapidă asupra metodelor utilizate pentru alocarea dinamică a memoriei.
mini bară de instrumente excel
malloc() | alocă un singur bloc de memorie solicitată. |
calloc() | alocă mai multe blocuri de memorie solicitată. |
realloc() | realocează memoria ocupată de funcțiile malloc() sau calloc(). |
gratuit() | eliberează memoria alocată dinamic. |
funcția malloc() în C
Funcția malloc() alocă un singur bloc de memorie solicitată.
Nu inițializează memoria la momentul execuției, deci are inițial o valoare de gunoi.
Returnează NULL dacă memoria nu este suficientă.
metode java
Sintaxa funcției malloc() este dată mai jos:
ptr=(cast-type*)malloc(byte-size)
Să vedem exemplul funcției malloc().
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>calloc() function in C</h2> <p>The calloc() function allocates multiple block of requested memory.</p> <p>It initially initialize all bytes to zero.</p> <p>It returns NULL if memory is not sufficient.</p> <p>The syntax of calloc() function is given below:</p> <pre> ptr=(cast-type*)calloc(number, byte-size) </pre> <p>Let's see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let's see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>
funcția calloc() în C
Funcția calloc() alocă mai multe blocuri de memorie solicitată.
Inițial, inițializează toți octeții la zero.
Returnează NULL dacă memoria nu este suficientă.
Sintaxa funcției calloc() este dată mai jos:
ptr=(cast-type*)calloc(number, byte-size)
Să vedem exemplul funcției calloc().
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d',sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let's see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>
funcția realloc() în C
Dacă memoria nu este suficientă pentru malloc() sau calloc(), puteți realoca memoria prin funcția realloc(). Pe scurt, schimbă dimensiunea memoriei.
salut lumea java
Să vedem sintaxa funcției realloc().
ptr=realloc(ptr, new-size)
funcția free() în C
Memoria ocupată de funcțiile malloc() sau calloc() trebuie eliberată prin apelarea funcției free(). În caz contrar, va consuma memorie până la ieșirea programului.
Să vedem sintaxa funcției free().
free(ptr)