malloc() - C da xotirani ajratish usuli ko'rsatilgan o'lchamdagi bitta katta xotira blokini dinamik ravishda ajratish uchun ishlatiladi.
calloc() - C tilidagi qo'shni ajratish usuli ko'rsatilgan turdagi xotira bloklarining belgilangan sonini dinamik ravishda ajratish uchun ishlatiladi.
free() – usul ishlatilayotgan xotirani dinamik ravishda ajratadi. Bu juda muhim, chunki malloc() va calloc() xotirani mustaqil ravishda ajratmaydi. Bu xotirani yo'qotishni kamaytirishga qaratilgan.
realloc() - usul allaqachon ajratilgan xotiraning xotira taqsimotini o'zgartiradi. U oldindan ajratilgan xotira yetarli bo'lmagan stsenariylarda qo'llaniladi, shuning uchun realloc xotirani dinamik ravishda qayta taqsimlash uchun ishlatiladi.
#include
#include
int main()
{
// pointer stores the
// base address of the created block
int* ptr;
int n, i;
// store and display the size of the array
printf("Please enter number of people invited :");
scanf("%d",&n);
printf("Invited people- %d\n", n);
// Dynamic allocation of memory using malloc()
ptr = (int*)malloc(n * sizeof(int));
// Check if the memory has been successfully
// allocated or not
if (ptr == NULL) {
printf("Memory not allocated.\n");
exit(0);
}
else {
// Memory has been successfully allocated
printf("Memory successfully allocated using malloc.\n");
// Taking user input of elements of an array
printf("Number of drinks to be prepared for each table in order: \n");
for (i = 0; i < n; i++) {
scanf("%d", ptr+i);
}
// Print the elements of the array
printf("The drinks order: ");
for (i = 0; i < n; i++) {
printf("%d, ", ptr[i]);
}
}
/*
freeing memory of ptr allocated by malloc
using the free() method
*/
free(ptr);
return 0;
}
Eslatma : Bu biroz og'ir, lekin konsentrat, biz yana sevimli barimizni olamiz.
Dinamik xotira ajratish statikdan ko'ra murakkab muammo stsenariylarida keng qo'llaniladi, chunki siz kerakli elementlarning aniq sonini ham bilmasangiz, statik xotira ajratish mumkin, lekin u haqiqatan ham ishlatilmaydigan xotirani isrof qilishi mumkin, bu yaxshi emasligi aniq. amaliyot.
Misol uchun , biz barimizning bo'lajak yubileyiga tashrif buyuradigan barcha mijozlarning nomi va sonini bilishimiz kerak, shunda ichimliklar uyda bo'lgani uchun mos ravishda tartibga solinishi mumkin, ha , mast bo'lgan odamlar ta'lim maqolalarida misol bo'la oladi, biz 2021 yil . Shunday qilib, biz 45 ta taklif yuborganimiz va xizmat ko'rsatish sig'imimiz 60 ta bo'lgani uchun maksimal o'lcham 60 bo'lishi mumkinligini bilamiz , biz 60 o'lchamli massivni e'lon qilishimiz va ularning nomlarini elementlar sifatida kiritishimiz mumkin, to'g'rimi ? O'sha kuni 15 tasi paydo bo'ldi, shuning uchun 45 ta xotira bloklari aslida bo'sh edi, lekin ajratildi.
Tasavvur qiling-a, bu miqdor millionlab va faqat yarmi ishlatilsa, shuning uchun biz hajmini bilmaydigan stsenariylarda dinamik xotirani ajratish statik xotira ajratishdan ko'ra samaraliroq amaliyotdir. Boshqa foydalanish holati, bizga foydalanuvchi kiritish orqali elementlarni oladigan massivlar kerak bo'lganda bo'lishi mumkin.
Do'stlaringiz bilan baham: |