Stack overflow



  • Hallo Leute,

    ich versuche gerade eine Koordinatendatei einzulesen.
    Der Code hierfür lautet wie folgt:

    double x,y,z, np;
    fopen_s( &stream, "c:\\ebene.xyz", "r" );
    unsigned int np = 0;
    
    if ( stream == NULL ) return 1;
    
    while (0 == feof( stream ) ) 
    { 
    	if ( 3 != fscanf_s( stream, "%Lf %Lf %Lf\n", &x, &y, &z ) ) return 2;
    	else np++;
    }
    

    Irgendwie bekomme ich bei bei einer Datei 40k < x < 70k Punkte einen Stack overflow. Woran kann es liegen? Wie kann man so etwas beseitigen?

    Gibt es eine effizientere Methode eine solche Datei einzulesen wenn man weder die Größe noch die Anzahl der Nachkommastellen der in der Datei befindenden Werte kennt? Bisher lese ich sie erstmal ein und zähle die Punkte um in einem zweiten Durchgang die passenden Arrays zu betanken.



  • Hat sich erledigt... war eine Desinformation mit dem einlesen.
    Der Fehler passierte direkt unter dieser Schleife:

    double ax[np+1], ay[np+1], az[np+1];
    

    Hier erklärt es sich von alleine warum der Stack nicht mitspielen wollte.

    geändert in:

    double *ax = malloc( (np+1)*sizeof(double) );
    double *ay = malloc( (np+1)*sizeof(double) );
    double *az = malloc( (np+1)*sizeof(double) );
    

    läuft das ganze wie geschmiert.


Anmelden zum Antworten