Stack ile heap arasındaki fark nedir? Gömülü sistemlerde dinamik bellek kullanımından neden kaçınılır?
Cevap
- Stack: yerel değişkenler ve fonksiyon çağrı bilgileri için kullanılır. Otomatik yönetilir, çok hızlıdır, boyutu sınırlıdır.
- Heap:
malloc/freeile çalışma zamanında ayrılan bellektir. Esnektir ama yönetimi geliştiricidedir.
Gömülü sistemlerde malloc'tan kaçınılmasının nedenleri:
- Parçalanma (fragmentation): uzun süre çalışan cihazda toplam bellek yeterli olsa bile büyük blok ayrılamayabilir
- Deterministik olmama: ayırma süresi öngörülemez, gerçek zamanlı gereksinimlerle çelişir
- Sızıntılar aylarca çalışan bir cihazı sonunda çökertir
Bunun yerine statik ayırma veya sabit boyutlu bellek havuzları kullanılır. MISRA C gibi standartlar dinamik belleği kısıtlar.
İlgili C Programlama soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.