2016-09-30 4 views
-4

Update zur Frage: Hier ist die SSCCE wo ich SIGSEV auf str1_h[0][j] = bar1(str1_c[j]); erhalten. Alle Variablen sind nicht Null, die ich überprüft gdb mit:Segmentation Fault, wenn Variablen sind nicht null, sondern auf `callq`

#include <fstream> //ifstream and ofilestream 

using namespace std; 

int bar1(int); 
int bar2(int); 
int bar3(int); 

int main() { 
    string str1 = "string"; 
    ifstream ifs; 
    ifs.open("./file.txt"); 
    string line, str2; 
    while (!ifs.eof()) { 
     ifs >> line; 
     str2 += line; 
    } 
    ifs.close(); 
    unsigned str2_l = str2.length(); 
    unsigned str1_l = str1.length(); 
    unsigned n = str2_l - str1_l + 1; 
    int str1_c[4]; 
    str1_c[0] = 0; 
    str1_c[1] = 0; 
    str1_c[2] = 0; 
    str1_c[3] = 0; 
    int x[3][4][n]; 
    int str1_h[3][4];  
    for (unsigned j = 0; j < 4; j++) { 
     str1_h[0][j] = bar1(str1_c[j]); 
     str1_h[1][j] = bar2(str1_c[j]); 
     str1_h[2][j] = bar3(str1_c[j]); 
     for (unsigned i = 0; i < n; i++) { 
      x[0][j][i] = bar1(0); 
      x[1][j][i] = bar2(0); 
      x[2][j][i] = bar3(0); 
     } 
    } 
} 
int bar1(int x) { 
    return 0; 
} 
int bar2(int x) { 
    return 0; 
} 
int bar3(int x) { 
    return 0; 
} 
+0

ist Ihr Algorithmus rekursiv? Absturz während eines Anrufs könnte Stapelüberlauf bedeuten. –

+1

Bitte versuchen Sie, ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und zeigen Sie uns. Oder zeigen Sie uns zumindest relevante Deklarationen und Initialisierungen und die tatsächlichen Werte der beteiligten Variablen (wie 'j'). –

+0

können Sie in 'division' gehen (setzen Sie einen Haltepunkt in die erste Zeile davon) –

Antwort