Ko‘rsatkichlar
Ko’rsatkichga ko’rsatkich(pointer to pointer) haqida qisqacha
Yüklə
117,5 Kb.
səhifə
7/7
tarix
16.06.2023
ölçüsü
117,5 Kb.
#131322
1
2
3
4
5
6
7
KO
Bu səhifədəki naviqasiya:
Xulosa
Ko’rsatkichga ko’rsatkich(pointer to pointer) haqida qisqacha
Bu mavzuda C++ o’rganayotganim uchun ochig’i kam ma’lumotga egaman, Bu narsa C++ga qaraganda C da ko’p ishlatiladi. Masalan, string tipi “char*”(dinamik kengayuvchi char massiv) dan foydalanadi, siz agar *string qilib ishlatmoqchi bo’lsangiz, bu ish ortida siz “char**” tipida ishlatayotgan bo’lasiz. Quyida soddaroq kod keltirilgan:
int a = 10;
int *b = &a;
int **c = &b;
**c = 20;
cout<
va ekranda uchchalasi ham 20 ga teng ekanligini ko’rasiz, c ni e’lon qilgan joyimizni pastidan yana int ***d = &c; deb davom etib ketishimiz mumkin.
Xulosa
Biz xotiraga qiymat saqlanishining 2 xil turi: stack va heap haqida gaplashdik. Ularning ishlashdagi farqlarini xususiyatlaridan ko’rgan bo’lsangiz kerak. Qisqagina xuloasalar:
Stackka qiymat kiritish heapga yozishdan ko’ra tezroq
Stack cheklangan hajmga ega, lekin heap dinamik tarzda kengaya oladi
Stackka qiymatlar joylash chiziqli, heapga qiymatlar joylash tasodifiy tarzda amalga oshiriladi
Stackka kiritiladigan ma’lumotlar stack sig’imidan oshib ketsa, stackoverflow xatoligi yuzaga keladi, bunday holatlar rekursiyada kuzatilishi mumkin. Bunda heapdan foydalangan yaxshi
Agar heap ga yozilgan ma’lumotlar tozalab turilmasdan, dastur ishlashda davom etib yana dinamik obyektlar e’lon qilaversa va ularni o’chirmasa, dastur ishlash jarayonida heapoverflow xatoligi yuzaga kelishi mumkin
Ko’rsatkich boshqa xotira manzilini o’zida saqlaydigan, stackka joylangan qiymat
Memory leakage ni oldini olish uchun dinamik obyektlarni o’chirib yurish yaxshi odat
Agar funksiyaga parametr sifatida beradigan o’zgaruvchimiz funksiya ichida o’zgartirilmasa, unda uni havolasini bergan ma’qul
4 baytdan kichik yoki unga teng qiymatlarni heapga kiritish unchalik yaxshi fikrmas, chunki 32 bitlik OSlarda ko’rsatkich stackdan 4 bayt oladi.
Maqola boshidagi kodimizda Test tipidagi t ni global qilganimizda qayoqqa berkinib olgani sizga qiziqmi? U na stackka, va na heapga joylangan, javobi quyidagi rasmda
source:
https://icarus.cs.weber.edu/~dab/cs1410/textbook/4.Pointers/memory.html
Shu joyiga kelganda siz bilan uyushtirgan sayohatimiz ham tugadi. Agar yaxshi gidlik qila olgan bo’lsam bundan xursandman, zeriktirib qo’ymadim degan umiddaman ;).
Quyida kichik kod qoldiraman, nega xato ishlashi mumkinligi haqida o’ylab ko’ring:
int* createArray(int size)
{
int array[size] = {0};//massiv barcha elementlarini nollaymiz
return array;
}
int main(){
int *arr = createArray(4);
for(int i = 0; i<4; i++)
cout<
return 0;
}
Aytgancha, sayohat boshida kodlarimda ko’rsatkichlardan foydalanmasdim degandim, hozir ham foydalanmayman :) albatta agar koddagi o’zgaruvchilar kattaroq joy talab qilmasa
Mavzu yuzasidan muhokama qiladiganlarimiz shular edi. Agar siz maqoladagi ma’lumotlarda kamchiliklar topsangiz, yoki sizda shu mavzu yuzasidan yuqorida aytilmagan ma’lumotlar bo’lsa maqola muallifiga murojaat qiling, ismingiz maqolada ko’rsatib o’tiladi.
Mavzu bo’yicha shu maqoladagi ma’lumotlar bilan cheklanib qolmasdan qo’shimcha sifatida boshqa manbaalarga ham murojaat qilishingizni so’rab qolaman.
Savollar bo’lsa telegramdagi
@C_Genius
yoki
@cppuz
guruhlariga kirib mavzu yuzasidan tushunmagan narsangizni so’rashingiz, yoki muhokama qilishingiz mumkin
Foydalanilgan manbalar:
https://www.geeksforgeeks.org/references-in-c/
https://www.guru99.com/stack-vs-heap.html
https://stackoverflow.com/questions/2975831/is-leaked-memory-freed-up-when-the-program-exits
https://stackoverflow.com/questions/3147014/is-heap-memory-per-process-or-common-memory-location-shared-by-different-proc
https://icarus.cs.weber.edu/~dab/cs1410/textbook/4.Pointers/memory.html
https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
https://www.freecodecamp.org/news/understand-your-programs-memory-92431fa8c6b/
https://stackoverflow.com/questions/2975831/is-leaked-memory-freed-up-when-the-program-exits
Yüklə
117,5 Kb.
Dostları ilə paylaş:
1
2
3
4
5
6
7
Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2025
rəhbərliyinə müraciət
gir
|
qeydiyyatdan keç
Ana səhifə
Stomatologiya
Anesteziologiya
Cərrahlıq
Ginekologiya
Tibb
yükləyin