Dinamik Bellek Tahsisi Nedir?

Yığın tabanlı bellek ayırması olarak da adlandırılan dinamik bellek ayırma, statik bellek ayırma tarafından keskin bir şekilde zıtlanan bir tür bellek yönetimidir. Dinamik bellek tahsisinde, programcı bilgisayara her program için ne kadar bellek ayıracağını ve belleğe ne kadar süre kalacağını söyler. Bu, aşırı bellek kullanımı ve duraklatılmış programlar gibi statik bellek ayırmada ortaya çıkan sorunların çoğunu çözer. Pek çok sorunu çözerken, programcı belleğe boşaltılmasını söylemeyi unutursa, dinamik bellek bir sorun haline gelebilir.

Bilgisayarlar, varsayılan olarak statik bellek ayırma kullanır. Bu, kullanıldıklarında programın kullanılmaması, programın kullanılmaması durumunda bile veya tutulan hafıza tehlikeli olduğunda veya performans için bir engel oluşturduğunda anlamına gelir. Örneğin, kullanıcı 3 MB'lık bir makinede 2 megabayt (MB) alan bir programı çalıştırmayı durdurursa ve ikinci bir programın başka bir 2 MB'ye ihtiyacı varsa, ikinci program çalışmayacaktır. Bunun nedeni bilgisayarda diğer program için yeterli bellek kalmamasıdır.

Statik hafıza tahsisi ile kullanıcı veya programlayıcı, depolamak istediği hafıza miktarını belirleyemez veya programcı, kaynakları boşaltmak için hafızayı boşaltmasını istediği statik hafızayı söyleyemez. Bu nedenle ileri düzey kullanıcılar genellikle dinamik bellek ayırmayı kullanır. Programcı, kaynaklar hakkında ne kadar süre tutulacağı da dahil olmak üzere bellek hakkındaki her şeyi kontrol edebilir.

Örneğin, programcı yalnızca 1 MB veya daha düşük bir değerde tutmak için dinamik bellek ayırmayı ayarlayabilir, bu da diğer programların açılmasına izin verecek kadar sistem belleği kazandırabilir. Statik hafıza genellikle programla ilgili her şeyi tutar, dinamik hafıza programcıların bazı verileri tutan daha düşük bir değere ayarlamasına izin verir, çünkü her şey değil. Aynı zamanda, statik belleğe hala ihtiyaç duyulacaktır ve bu tahsisat şemasında ayarlanabilir.

Dinamik bellek tahsisi ile ilgili olası bir sorun - nadiren ortaya çıkan - programlayıcı bir zaman değeri ayarlamayı unutursa dinamik belleğin dolmasıdır. Zaman değeri ayarlanmazsa, sonunda belleği serbest bırakacak statik belleğin aksine, dinamik bellek bilgi üzerinde durur. Programın bir çöp dökümü uygulaması varsa ve çoğu varsa, belleği temizlemek için belirli bir süre sonra etkinleşir. Bellek ayırma için bir zaman değeri ayarlamak hala en iyi yöntemdir.