Şimdi Ara

yazlımcı arkadaşlar bakabilir mi?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
3
Cevap
0
Favori
121
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bu akşamüzeri bir araştırma görevlisi ve 4 5 öğrenci arkadaş bir buçuk saat kadar uğraştık ama işin içinden çıkamadık, structure'ın ilgili member field'ına string okuturken neden segmentasyon hatası veriyor olabilir? Syntax hatası olmadığından, structure için yeterli hafızanın başarılı bir şekilde aloke edildiğinden, makefile ve diğer .c uzantılı dosyaların ve header'ların doğru yazıldığından eminiz. İşin garibi fonksiyonun içinde rastgele bir lokal değişken tanımladığımızda ona bile değer okutamadık. Aynı hatayı aldık. yazlımcı arkadaşlar bakabilir mi?







  • Structure için yeterli hafıza allocate ettiğinizi söylüyorsunuz. O zaman olay şöyle gelişiyor:

    struct ogrenci{
    char* ad;
    }ogr;

    Ornegin isim de "Ahmet" olsun.

    Siz bu struct için yer aldığınızda 32 bit adresleme kullandığınızı varsayıcam, struct'ın içindeki pointer için yer alacaktır.
    Yani char türünde bir yeri işaret eden, 32 bitlik bir adres tutabilecek pointer için yer alıcak. Ancak siz "Ahmet"'i tutmak istiyorsanız null karakteriyle beraber 6*32 yani 192 bitlik bir yer almanız gerekiyor.

    Kısaca işaret edebilecek kapasiteyi vermişsiniz ama işaret ettiği yeri allocate etmemişsiniz diye düşünüyorum hocam. Kodun geri kalan kısmını da gösterirseniz daha iyi yorum yapabilirim.

    İyi forumlar.
  • İznin olmayan RAM üzerinde bölgeye erişmişsiniz. Genellikle bu hata prinf veya main 'de çıkıyor. Main fonksiyonu doğru şekilde mi kullanıldı acaba ? (arg verirken vs.) Yada %s yerine %f, veya tam tersi gibi bir problemde olabilir. Ve diğer son olarak aklıma gelen malloc kodu.

    İşte bir IDE kullanmamanın zararları. Debug mode ile birkaç dakikada olay çözülebilir. Adamlar oraya debug mode'u boşuna koymuyor değil mi ? (:

    Başarılar.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.