2016-04-08 28 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ı.