Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
722
Tıklama
0
Öne Çıkarma
c de array i iade etmek
B
18 yıl
Teğmen
Konu Sahibi

merhaba,

benim bir fonksiyonum bir array oluşturup bu arrayin başlangıç adresini döndürüyor.
ben de main de bir pointer da bu adresi tutuyorum fakat, daha sonra bu array le işim bittiğinde ilk baştaki fonksiyonumdan yeni bir arrayi gene aynı pointer da tutucam. Buradaki sorun şu eğer eski array in işgal ettiği bellek alanını sisteme iade etmezsem çok büyük boyutlu olduğu için heap alanı yetersiz kalıyori program tıkanıyor. yani başka bir deyişle:

main(){

ptr = createArray(); // ilk array in başlangıç adresi ptr ye atanıyor

free(ptr); // burada ilk arrayin tuttuğu bellek alanını iade etmek istiyorum

ptr = setArray(); // ptr ye yeni bir array in başlangıç adresi atanıyor

}

benim sorum şu bu array in işgal ettiği alanın tamamını sisteme iade etmek için sadece free(ptr) yeterli mi yoksa bir dngü ile array elemanlarının adreslerini tek tek dolaşıp free mi etmeliyim?

yardımcı olan arkadaşlara şimdiden teşekkürler



W
18 yıl
Onbaşı

Array'in elemanları basit tiplerse (int, short vs gibi) ya da basit tiplerden oluşan birer struct ise free demen yeterli.

Array icin yeri malloc'la filan aldığını varsayıyorum..


Bu mesaja 1 cevap geldi.
B
18 yıl
Teğmen
Konu Sahibi

öyle değil gibime geliyor, farklı fikirleri olan arkadaşları bekliyorum...


Bu mesaja 1 cevap geldi.
W
18 yıl
Onbaşı

quote:

Orjinalden alıntı: btahir346

öyle değil gibime geliyor, farklı fikirleri olan arkadaşları bekliyorum...


dostum fikir yürütülecek bir konu değil bu :)
güvenle free edebilirsin malloc ile aldığın bir array'i.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.