2011-01-15 23 views
6
döndürürken aşağıdaki önemsiz kod bir segment hataya üretir neden merak ettik

ana():Segmentasyon hatası

//Produces "Error while dumping state (probably corrupted stack); Segmentation fault" 

#include <iostream> 
#include <fstream> 
#include <vector> 
using namespace std; 

class Test 
{ 
    vector<int> numbers; 
}; 

int main() 
{ 
    Test a; 
    ifstream infile; 

    cout << "Last statement..." << endl; // this gets executed 
    return 0; 
} 

İlginç bir şekilde, 1) iki değişkenden yalnızca biri bildirilirse, hata alamıyorum, 2) Bir vektör öğesi olan bir nesne yerine bir vektör değişkeni bildirirsem, her şey yolundaysa, 3) Bir ifstream yerine ofstream ilan, yine, her şey iyi çalışıyor. Bu belirli bileşimle ilgili bir sorun var gibi görünüyor ...

Bu bir derleyici hatası olabilir mi? Ben gcc sürüm 3.4.4 cygwin ile kullanıyorum.

Önceden ipuçları için teşekkürler.

Gábor

+8

gcc 3.4.4 eskidir. 4 seri ile deneyebilir misin? –

+0

Benzer bir şeyle bir hata raporu görmek hatırlıyorum, tam olarak hatırlayamıyorum, bu yüzden bulamıyorum. Ama oldukça eminim bu, o zamandan beri düzeltilmiş olan belirsiz bir böcek. – GManNickG

+0

Gelin. 3.0 sanatın ne zaman olduğunu hatırlıyorum. Şimdi gcc 2.95/2.96 şimdi eski ve tuhaf bir derleyici vardı. Sadece g derlenmesini çalıştı –

cevap

4

Bu bir hatadır. Bu sizin programınızın tamamıysa, kesinlikle yanlış bir şey yoktur. Derleyici veya standart kitaplıkta bir hata keşfettiniz. Yorumda size tavsiye edildiği gibi, bir 4.x serisi gcc derleyicisini deneyin. 3.x serisi tepeler kadar eskidir.

+0

Hızlı cevaplar/yorumlar için çok teşekkürler. Ne yazık ki, derleyiciyi yükseltmek bu durumda basit bir konu değildir. Allegro oyun kütüphanesine bağlı olan Tscope adlı C kütüphanesi ile psikoloji deneyi geliştiriyorum. Tscope, bir cygwin ortamı, gcc derleyicisi, temel IDE, vb. Ile birlikte gelir. Sorun şu: Allegro artık daha yeni cygwin üzerinde derleme yapmıyor. Ve sadece gcc.exe'nin yerine geçeceğine inanmıyorum, değil mi? –

+0

@ Gábor Kovács - Hayır, bu yeterli olmaz. Ama ben Cygwin'in seçmeli olarak yükseltmenize izin veren bir paketleme sistemine sahip olduğuna inanıyorum. Yani bunu deneyebilirsin. – Omnifarious

İlgili konular