Aracılığıyla paylaş


Bellek yönetimi: Çerçeve ayırma

Ayırma çerçevesinde alır, adı "olarak ayarlanmış olan yığın çerçevesi" her bir işlevi çağrılır.Yığın çerçevesi, geçici olarak bağımsız tanımlanan değişkenlerin yanı sıra işlevi işlev yerel tutan bellek alanıdır.Derleyici otomatik olarak boşluk kendileri için ayırdığı için çerçeve değişkenlerini genellikle "Otomatik" değişkenler denir.

İki anahtar kare ayırma özellikleri vardır.İlk olarak, yerel bir değişken tanımladığınızda, büyük dizi ya da veri yapısı olsa bile, yeterli tüm değişken tutmak için yığın çerçevesi ayrılır.İkinci olarak, çerçeve değişkenleri kapsam dışında olduğunuzda otomatik olarak silinir:

void MyFunction()
{
    // Local object created on the stack
    CString strName;
    // Object goes out of scope and is deleted as function ends
}

Yerel işlev değişkenleri için bu kapsam geçişi gerçekleşir iç içe ayraçlar kullanılırsa, işlev çıkar, ancak bir değişkenin kapsamı, çerçeve işlevi küçük olabilir.Bu çerçeve değişkenlerini otomatik silinmesi önemlidir.Basit İlkel türler olması durumunda, (gibi int veya bayt), dizi ya da veri yapılarında, otomatik olarak silinmesi yalnızca değişkeni tarafından kullanılan bellek biçimiyleilgili.Yine de değişkenin kapsamı dışına çıktığını olduğundan erişilemiyor.C++ nesnesi olması durumunda, ancak otomatik silme işlemi biraz daha karmaşıktır.

Nesne çerçevesi değişken olarak tanımlandığında kurucusu tanımı burada karşılaşıldığında noktada otomatik olarak çağrılır.Nesne kapsam dışına çıktığında, nesnenin bellek iadesi önce kendi yıkıcıya otomatik olarak çağrılır.Bu otomatik yapım ve imha çok kullanışlı olabilir, ancak otomatik çağrıları, özellikle yıkıcı bilmeniz gerekir.

Nesne çerçevesinde tahsis anahtar avantajı, bunlar otomatik olarak silinmiş olmasıdır.Nesneleriniz çerçevesinde tahsis ettiğinizde, bellek sızıntıları neden unutulan nesneler hakkında endişelenmeniz gerekmez.(Makaleyi bellek sızıntıları hakkında daha fazla bilgi için bkz: , mfc bellek sızdırıyor algılama.) Çerçeve ayırma dezavantajı, çerçeve değişkenlerini kendi kapsamı dışında kullanılamaz olur.Seçerken kare ayırma ötesinde karşı bir başka faktör büyük yapıları ve nesneler için genellikle yığın yığın alanı genellikle sınırlı olduğundan yerine yığın depolama birimi için kullanmak daha iyi olmasıdır.

Ayrıca bkz.

Kavramlar

Bellek Yönetimi