logo

Dinamikus memóriafoglalás C-ben

A koncepció dinamikus memóriafoglalás c nyelven lehetővé teszi a C programozó számára a memória lefoglalását futás közben . A dinamikus memóriafoglalás c nyelven az stdlib.h fejlécfájl 4 funkciójával lehetséges.

  1. malloc()
  2. calloc()
  3. realloc()
  4. ingyenes()

Mielőtt megismernénk a fenti függvényeket, értsük meg a különbséget a statikus memóriafoglalás és a dinamikus memóriafoglalás között.

statikus memóriafoglalásdinamikus memóriafoglalás
a memória lefoglalása a fordítási időben történik.a memória lefoglalása futási időben történik.
a memória nem növelhető a program végrehajtása közben.A memória bővíthető a program végrehajtása közben.
tömbben használják.linkelt listában használják.

Most pedig vessünk egy gyors pillantást a dinamikus memóriafoglaláshoz használt módszerekre.

malloc() egyetlen blokkot foglal le a kért memóriából.
calloc() több blokkot foglal le a kért memóriából.
realloc() újrafoglalja a malloc() vagy calloc() függvények által elfoglalt memóriát.
ingyenes() felszabadítja a dinamikusan lefoglalt memóriát.

malloc() függvény C-ben

A malloc() függvény egyetlen blokkot foglal le a kért memóriából.

Nem inicializálja a memóriát a végrehajtás során, ezért kezdetben szemét értéke van.

NULL értéket ad vissza, ha nincs elegendő memória.

A malloc() függvény szintaxisa az alábbiakban látható:

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

Nézzük a malloc() függvény példáját.

 #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() függvény C-ben

A calloc() függvény több blokkot foglal le a kért memóriából.

Kezdetben nullára inicializálja az összes bájtot.

NULL értéket ad vissza, ha nincs elegendő memória.

A calloc() függvény szintaxisa az alábbiakban látható:

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

Nézzük a calloc() függvény példáját.

 #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() függvény C-ben

Ha a memória nem elegendő a malloc() vagy calloc() számára, akkor a memóriát a realloc() függvény segítségével újra lefoglalhatja. Röviden, megváltoztatja a memória méretét.

Lássuk a realloc() függvény szintaxisát.

 ptr=realloc(ptr, new-size) 

free() függvény C-ben

A malloc() vagy calloc() függvények által elfoglalt memóriát a free() függvény meghívásával kell felszabadítani. Ellenkező esetben a program kilépéséig elfoglalja a memóriát.

Lássuk a free() függvény szintaxisát.

 free(ptr)