2016-04-08 17 views
0

ben CLION aşağıdaki kodu çalıştırın: *(pmessage+2)='X'; istisnalar yükseltmek gerekirNerede CLION en İstisna Mesajları görmek için

int main() 
{ 
    char amessage [] = "oafaojfpa"; 
    char * pmessage = "oafaojfpa"; 
    char * apmessage = amessage; 

    amessage[2]='X'; 
    *(pmessage+2)='X'; 

    printf(amessage); 
    printf("\n"); 
    printf(pmessage); 
    printf("\n"); 
    printf(apmessage); 

    return(0); 
} 

kodu. Bununla birlikte, çıktı şu şekildedir: çıkış, yalnızca çıkış kodu 10'u söyler. Ancak, istisna mesajını nerede görüntüleyebilirim?-3401-3491101

cevap

0

Yalnızca C++ kodu istisnalar atar. Bu durumda düşük seviyeli hatalar yaşıyorsunuz. BUS HATASI olan bir C/OS dönüş değeri 10 görüyorsunuz.

Otobüs hataları x86 üzerinde günümüzde nadirdir ve işlemci bile tipik olarak istenen bellek erişimi denemez zaman gerçekleşir:

  • onun hizalama gereksinimlerini karşılamak olmayan bir adresle sahip bir işlemci talimatı kullanarak.
  • değişmez bir dizeye sadece belleği

İşaretçiniz pmessage noktaları okumak değiştirmelerini. Bu dize salt okunur bellekte saklanır ve bu bellek değiştirilmeye çalışılmamış tanımlamaya yol açar. Genellikle segfaults veya bus hataları.

İlgili konular