2011-07-08 22 views
5

Yönetilmeyen bir yığın nedir?Yönetilen ve Yönetilmeyen öbek

CLR'nin yönettiği herhangi bir nesne tabanlı belleğin yönetilen yığın olduğunu düşündüm, bu yüzden neden yönetilmeyen bir yığın hakkında konuşuyoruz?

cevap

10

P/Invoke kullanarak bir Win32 işlevini çağırdığınızı ve malloc'u kullanarak bazı bellekleri ayırabileceğinizi düşünün. Çöp toplayıcısının bu belleğin görünmezliği vardır - yönetilmeyen.

Bu terimi duyduğunuz bağlam olabilir veya olmayabilir, elbette - bize bazı örneklere işaret ederseniz, size daha fazla yardımcı olabiliriz. John Skeet gereğince

+1

CLR'nin bağlamında, yönetilmeyen bir yığın yok. Yani sadece yönetilmeyen kod tarafından kullanılan, sadece tam bir GC için özel olarak yerleştirilmiş olan bellek ... doğru mu? –

+0

@ user164184, bu kulağa doğru geliyor, evet. –

+2

@ user164184: Diyorum ki * yönetilmeyen bir yığın yok - daha fazla endişelenmenize gerek yok. CLR'nin kendisinde hiç yönetilmeyen veri yapıları kullanılmayacaktır. –

6

- managed yığın tüm standart nesneler normalde o yönetilir çünkü hakkında çok fazla rahatsız etmek gerekmez, oluşturulan olduğundan, .net sizin için yönetecek biridir.

unmanaged şahsen bellek ayrılırken edilir ve böylece bizzat kendiniz yönetmek, onu ayırmayı kaldırma ve kullanılmakta olan şeylerin kaydını tutmak sorumlu olduğu anlamına gelir.

Evet, nesne belleği (normal nesne oluşturma ve imha anlamında, nesneden türeyen şeyler) yönetiliyor. Endişelenmeniz gereken diğer şeyler - onlar için olmayan nesneler ve bellek.

0

Yönetilmeyen Yığın .net içinde anlaşılması için Yönetilen Öbeğin ne olduğuna dair bir fikir edinmemiz gerekiyor.

. Net çerçevesinde, Ortak dil rutini tarafından başlatılan Çöp Toplayıcı var. Başlatma sırasında Çöp toplayıcı, Yönetilen bir kod tarafından başlatılan nesneleri depolamak ve yönetmek için bir bellek bölümü ayırır. Bu belleğe yönetilen yığın adı verilir. İşletim sistemindeki yerel bir yığına karşı.

Yönetilmeyen yığın, çalışma zamanında belleği ayırmak için yönetilmeyen kod/yerel kod tarafından kullanılandan biridir. Bu yığın, çöp toplayıcısının denetimi altında değildir ve ayrılan bellek boşaltmak için geliştirici tarafından ele alınması gerekir. Difference between "managed" and "unmanaged"

İlgili konular