logo

Alocarea dinamică a memoriei în C

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.

  1. malloc()
  2. calloc()
  3. realloc()
  4. 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(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,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&apos;s see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,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&apos;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&apos;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(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d&apos;,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&apos;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&apos;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)