Bazı bellek sızıntısı ile ilgili çalışmalar yaparken, bu net üzerinden karşılaştım."asılı referans" ve "genel koruma hatası" nedir?
int* Function()
{
int arrays[10];
/* Some code here */
return &(arrays[0]);
}
yazar kod yukarıdaki parça geçerlidir ancak döndürülen bellek aramak sonraki işlevi tarafından yeniden ve böylece, aynı bellek iki amaçla kullanılır olacağını söylüyor. Buna "asılı referans" denir ve korkunç aralıklı arızalara veya eski moda "genel koruma hatası" na neden olabilir.
birileri bu resmi açıklamalar ise bilmiyorum ama bu örnek için daha iyi bir anlam veriyor umut & "genel koruma hatasına"
yazar sonra çok iyi C bilmiyor, yoksa onu yanlış tanıtıyor ediyoruz. Program tanımlanmamış bir davranışa sahiptir. –
Bu işlev, belleğe tam olarak sızmıyor çünkü işlev döndüğünde ayrılmış dizi otomatik olarak ayrılacak. Bu, asılı bir referansla kastedilen şey, yığında ayrılan bir belleğe bir gösterici döndürüyorsunuz.İşlev döndüğünde, yığın ayrılmış dizi ayrılır, böylece bellekteki konum bir sonraki işlev çağrısı için verilere yazılabilir, böylece döndürülen işaretçiyi iptal etmek tanımsız bir değer verecektir. –
Yup, Asılı referans, artık mevcut olmayan yığıntaki bir şeye gönderme anlamına gelir. "Genel koruma hatası" hakkında bir fikir var mı? –