Koncepcja dynamiczna alokacja pamięci w języku c umożliwia programiście C alokację pamięci w czasie wykonywania . Dynamiczna alokacja pamięci w języku C jest możliwa dzięki 4 funkcjom pliku nagłówkowego stdlib.h.
- malloc()
- kaloc()
- realloc()
- bezpłatny()
Zanim poznamy powyższe funkcje, zrozummy różnicę między statyczną alokacją pamięci a dynamiczną alokacją pamięci.
statyczna alokacja pamięci | dynamiczna alokacja pamięci |
---|---|
pamięć jest przydzielana w czasie kompilacji. | pamięć jest przydzielana w czasie wykonywania. |
pamięci nie można zwiększyć podczas wykonywania programu. | pamięć można zwiększyć podczas wykonywania programu. |
używane w tablicy. | używane na liście połączonej. |
Przyjrzyjmy się teraz szybko metodom używanym do dynamicznej alokacji pamięci.
menu JavaScript
malloc() | przydziela pojedynczy blok żądanej pamięci. |
kaloc() | przydziela wiele bloków żądanej pamięci. |
realloc() | ponownie przydziela pamięć zajmowaną przez funkcje malloc() lub calloc(). |
bezpłatny() | zwalnia dynamicznie przydzielaną pamięć. |
funkcja malloc() w C
Funkcja malloc() przydziela pojedynczy blok żądanej pamięci.
Nie inicjuje pamięci w czasie wykonywania, więc początkowo ma wartość śmieciową.
Zwraca NULL, jeśli pamięć nie jest wystarczająca.
zmiana nazwy folderu w systemie Linux
Poniżej podano składnię funkcji malloc():
ptr=(cast-type*)malloc(byte-size)
Zobaczmy przykład funkcji 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)>
funkcja calloc() w C
Funkcja calloc() przydziela wiele bloków żądanej pamięci.
Początkowo inicjuje wszystkie bajty na zero.
Zwraca NULL, jeśli pamięć nie jest wystarczająca.
Poniżej podano składnię funkcji calloc():
ptr=(cast-type*)calloc(number, byte-size)
Zobaczmy przykład funkcji 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)>
funkcja realloc() w C
Jeśli pamięć nie jest wystarczająca dla malloc() lub calloc(), możesz ponownie przydzielić pamięć za pomocą funkcji realloc(). Krótko mówiąc, zmienia rozmiar pamięci.
oj, w Javie
Zobaczmy składnię funkcji realloc().
ptr=realloc(ptr, new-size)
funkcja free() w C
Pamięć zajmowana przez funkcje malloc() lub calloc() musi zostać zwolniona poprzez wywołanie funkcji free(). W przeciwnym razie zajmie pamięć do czasu zakończenia programu.
Zobaczmy składnię funkcji free().
free(ptr)