|
malloc(), calloc(), free(), new, delete
|
bet | 3/5 | Sana | 15.05.2024 | Hajmi | 5,4 Mb. | | #235102 |
Bog'liq 1-mustaqil ish tizimli dasturlashmalloc(), calloc(), free(), new, delete
C tilida, siz malloc() funktsiyasidan foydalanib xotirani dynamik ravishda ajratishingiz mumkin, calloc() funktsiyasidan esa xotirani ajratib va uning barcha qiymatlarini nolga tenglash orqali yaratishingiz mumkin, free() funktsiyasi esa ajratilgan xotirani ozod qilish uchun ishlatiladi.
Quyidagi misolni ko'ring:
#include
#include
int main() {
int *ptr = (int*)malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Xotirani ajratishda xato yuz berdi\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}
C++ tilida, siz new operatoridan foydalanib xotirani dynamik ravishda ajratishingiz mumkin va obyektlarni yaratish mumkin. Uning qarshi tomoni delete operatori esa ajratilgan xotirani ozod qilish va obektlarni bekor qilish uchun ishlatiladi.
Quyidagi misolni ko'ring:
#include
int main() {
int *ptr = new int[5];
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
}
for (int i = 0; i < 5; i++) {
std::cout << ptr[i] << " ";
}
delete[] ptr;
return 0;
}
Xotirani ajratishda xotirani ozod qilish uchun free() funktsiyasidan C tilida yoki delete operatoridan C++ tilida foydalanishni unutmangiz.
Xotirani Statik Taqsimlash
Definitions
Statik xotira ajratish, o'zgaruvchanlarni va ma'lumot strukturalarini kompilyatsiya vaqti uchun xotiraga taqsimlash jarayonini ifodalaydi. Ushbu usulda, har bir o'zgaruvchan uchun talab etiladigan xotira miqdori dasturning tuzilish bosqichida aniqlanadi va dastur ishga tushirilish davomida o'zgarmaydigan bo'ladi. Bu degani, bu o'zgaruvchanlar uchun xotira joylari oldindan ajratiladi va ish vaqti davomida o'zgartirib bo'lmaydi.
Advantages
Statik xotira ajratishning asosiy afzalligi uning oddiylik va samaradorligidir. Xotira talablaridan oldin bilinadiganligi sababli, kompilyator kodni va xotira foydalanishini optimallashtirishi mumkin bo'ladi, bu esa tez ishlash vaqtlariga olib keladi. Qo'shimcha ravishda, statik xotira ajratish odatda xavfsizroq bo'ladi, chunki bu dinamik xotira bilan bog'liq muammolarni, masalan, xotira sarflanishlari va asosiy ko'rsatgichlar bilan bog'liq muammolarni bartaraf etadi.
Limitations
Statik xotira ajratishning asosiy cheklovi bu uning o'zgarmaslikidir. Xotira talablarining o'zgarmasligi sababli, dastur o'zgaruvchan holatlarga moslashish yoki o'zgaruvchan miqdorlarda o'zgaradigan dinamik ma'lumot strukturalarini boshqarib bo'lmaydi. Bu sababli, ajratilgan joy to'la foydalanilmagan holatda xotira sarflanishi mumkin yoki dastur boshlangan paytdan ko'p xotira talab qilishi mumkin, bu esa dasturda xato chiqarishi bilan natija bo'ladi.
|
| |