SORU
27 ŞUBAT 2010, CUMARTESİ


Segment hatası nedir?

Segment hatası nedir? C ve C farklı mı ? Nasıl bölümleme hatası ve sarkan işaretçi ilgili?

CEVAP
27 ŞUBAT 2010, CUMARTESİ


Segment hatası hata belirli bir tür “sana ait değil.” bellekten kaynaklanır Bellek bozulmasını ve zor hata ayıklama bellek hataları tanıtan engelleyen yardımcı bir mekanizma. Zaten, belleğin salt okunur bir kısmı yazılı serbest bir bellek erişim değişkeni ile yanlış yaptığını biliyorsun bir segfault almak zaman, vb. Segment hatası aslında hafıza yönetimi ile karıştırmasına izin en dilde aynıdır, C ve C segfaults principial arasında fark yoktur .

Bir segfault, en az C gibi düşük seviyeli bir dilde almak için birçok yolu vardır( ). Bir segfault almak için ortak bir yol, bir null işaretçi çözümlemesi için:

int *p = NULL;
*p = 1;

Başka bir segfault salt okunur olarak işaretlenmiş bir bellek bölümüne yazmak için çalıştığınızda oluşur:

char *str = "Foo"; // Compiler marks the constant string as read-only
*str = 'b'; // Which means this is illegal and results in a segfault

Sarkan işaretçi bir daha, gibi, var olmayan bir şeyi gösteriyor:

char *p = NULL;
{
    char c;
    p = &c;
}
// Now p is dangling

İşaretçi p Blok bittikten sonra karakter değişken ortadan kalktığını c işaret çünkü tırmanıyor. Ve sarkan işaretçi çözümlemesi için çalıştığınızda (*p='A'), muhtemelen bir segfault olacaktı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007
  • Utah Valley Online

    Utah Valley

    9 AĞUSTOS 2010