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

  • arnejann

    arnejann

    3 Kasım 2007
  • Kindness

    Kindness

    23 Ocak 2006
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009