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?
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