logo

Dinamiskā atmiņas piešķiršana C

Jēdziens par dinamiska atmiņas piešķiršana c valodā ļauj C programmētājam piešķirt atmiņu izpildes laikā . Dinamiskā atmiņas piešķiršana c valodā ir iespējama, izmantojot 4 stdlib.h galvenes faila funkcijas.

javafx par aptumsumu
  1. malloc ()
  2. calloc()
  3. realloc()
  4. bezmaksas ()

Pirms iepriekš minēto funkciju apguves sapratīsim atšķirību starp statisko atmiņas piešķiršanu un dinamisko atmiņas piešķiršanu.

statiskā atmiņas piešķiršanadinamiska atmiņas piešķiršana
atmiņa tiek piešķirta kompilēšanas laikā.atmiņa tiek piešķirta darbības laikā.
Programmas izpildes laikā atmiņu nevar palielināt.Programmas izpildes laikā var palielināt atmiņu.
izmanto masīvā.izmantots saistītajā sarakstā.

Tagad īsi apskatīsim dinamiskās atmiņas piešķiršanas metodes.

malloc () piešķir vienu pieprasītās atmiņas bloku.
calloc() piešķir vairākus pieprasītās atmiņas blokus.
realloc() pārdala atmiņu, ko aizņem funkcijas malloc () vai calloc ().
bezmaksas () atbrīvo dinamiski piešķirto atmiņu.

malloc () funkcija C

Funkcija malloc () piešķir vienu pieprasītās atmiņas bloku.

Tas neinicializē atmiņu izpildes laikā, tāpēc sākotnēji tam ir atkritumu vērtība.

Tas atgriež NULL, ja nav pietiekami daudz atmiņas.

Funkcijas malloc () sintakse ir norādīta zemāk:

 ptr=(cast-type*)malloc(byte-size) 

Apskatīsim funkcijas malloc() piemēru.

 #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)>

calloc() funkcija C

Funkcija calloc () piešķir vairākus pieprasītās atmiņas blokus.

Tas sākotnēji inicializē visus baitus līdz nullei.

Tas atgriež NULL, ja nav pietiekami daudz atmiņas.

1 miljons cik 0

Funkcijas calloc () sintakse ir norādīta zemāk:

 ptr=(cast-type*)calloc(number, byte-size) 

Apskatīsim calloc() funkcijas piemēru.

 #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)>

realloc() funkcija C

Ja atmiņa nav pietiekama malloc () vai calloc (), varat pārdalīt atmiņu, izmantojot funkciju realloc (). Īsāk sakot, tas maina atmiņas lielumu.

Apskatīsim funkcijas realloc() sintaksi.

 ptr=realloc(ptr, new-size) 

free() funkcija C

Atmiņa, ko aizņem funkcijas malloc () vai calloc (), ir jāatbrīvo, izsaucot funkciju free (). Pretējā gadījumā tas patērēs atmiņu līdz programmas iziešanai.

Apskatīsim funkcijas free() sintaksi.

 free(ptr)