Merhaba, tekrar hoş geldiniz. Bu bizim son ödevimiz, işaretçi bölümümüz
için son mücadelemiz olacak.
Bu yarışmada, dinamik bellek tahsisinin nasıl
çalıştığını anlamanızı istiyorum. Bu yüzden bir dizeyi malloc etmeniz gerekecek.
Oldukça basit olacak.
Ancak tüm bu dinamik bellek tahsisi
kavramını anlamanızı sağlayacaktır.
Dinamik bellek tahsisinin avantajları nelerdir?
Bu, ihtiyaç duyduğunuzda yeterli bellek ayırabileceğiniz anlamına gelir.
Hafızanızı boşa harcamak zorunda değilsiniz. Ve daha fazla belleğe ihtiyacınız olursa yeniden tahsis edebilirsiniz.
Bu ödev sadece malloc kullanmanızı sağlayacak.
Bu yarışmada, dinamik bellek tahsisi anlayışınızı test eden bir program yazacaksınız.
Kullanıcının bir metin dizesi girmesini sağlayan bir program yazmanızı istiyorum.
Bu yüzden scanf kullanmanız gerekecek. Ayrıca git s kullanabilirsiniz, bundan
çok fazla bahsetmedik, ancak standart giriş akışında git s veya
f git s boşluk içeren bir dizeyi okumanıza
izin verecektir. Unutmayın, scanf dizeyi
yalnızca bir boşluğa kadar okuyacaktır.
Eğer git s kullanırsanız, boşluklarla ayrılmış birden fazla dizeyi okuyabilirsiniz,
scanf ya da git s her iki yol da iyidir.
Kullanıcının bir dize girmesini sağlayacaksınız. Program girilen metni
yazdıracaktır.
Bu çok kolay görünebilir, ancak buradaki fark, programın dinamik bellek tahsisini
kullanacak olmasıdır.
Ayrıca kullanıcının girdiği dizenin sınırını girmesini sağlayabilir
ve daha sonra malloc için bunu kullanabilirsiniz, böylece kaç bayt ayıracağınızı bilirsiniz.
Bir char işaretçisi oluşturmalısınız, sadece bir karakter işaretçisi, karakter dizileri yok.
Bellek ayırmanı istiyorum. Unutmayın, karakter dizisini oluşturduğunuzda,
parantez içine koyduğunuz boyuta bağlı olarak bellek sizin için otomatik
olarak zaten ayrılmıştır.
Ve
yine, bunun büyük bir dezavantajı, şimdi boyuta koyduğunuzdan daha büyük bir şey girmeye çalışırsanız, yeniden derlemeniz gerekir.
Durağan. Bu bellek derleme zamanında ayrılır.
Dinamik bellek siz programı çalıştırırken tahsis edilir.
Böylece kullanıcının girdiklerine göre ne kadar bellek ayırmak istediğinizi belirleyebilirsiniz.
Bu yüzden tekrar, kullanıcıdan dize için ayırmak istediğiniz
bayt sayısı için bir sayı girmesini isteyin.
Ardından kullanıcıdan dizeyi girmesini isteyin.
Ve belleği doğru bir şekilde ayırmanız ve ardından bu karakter işaretçisini scanf veya git s'ye
geçirmeniz ve ardından
temel olarak sadece girilen metni görüntülemeniz gerekir.
Ve son olarak, tüm önemli ücretsiz işlevi unutmayın.
Her zaman belleğinizi kullanmayı bitirdiğinizde serbest bırakmak
istersiniz ve diğer programların bu belleği kullanabilmesi için bunu yaptığınızdan
emin olmak istersiniz. Bellek, özellikle gömülü sistemlerde
gerçek zamanlı programlarda kıt bir kaynaktır, bu nedenle belleği
kullanmayın, serbest bırakın.
İyi şanslar, bir sonraki derste bir çözüm sunacağım. Teşekkür ederim.