Fehler nur im Release



  • hallo!

    folgender code funktioniert im debug mode einwandfrei, führt jedoch im release zu einem zugriffsfehler.

    void makeCsv(float **matrix, int xrange, int yrange, char fname[])
    {
        FILE *f;
    	int i,j;
    	char name[] = "matrix_";
    	char extension[] = ".csv";
    
    	strcat(name, fname);
    	strcat(name, extension);
    
    	if((f = fopen(name, "w")) != NULL)
    	{		
    		for(i = 0; i < xrange; i++)
    		{
    			for(j = 0; j < yrange; j++)
    			{
    				fprintf(f, "%2.0f;", matrix[i][j]);
    			}
    			fprintf(f, "\n");
    		}
    		fclose(f);
    	}
    }
    

    Was ist daran falsch? Kann mir jemand helfen?

    Gruß
    Sebastian



  • Du kopierst zu viel in einen zu kleinen Buffer:

    char name[] = "matrix_";
    ...
        strcat(name, fname);
        strcat(name, extension);
    

    Mach aus dem char name[]... ein *char name und allociere Speicher mittels malloc respektive realloc. Dann sollte es gehen.



  • Dankeschön, darauf hab ich nicht geachtet!

    MfG


Anmelden zum Antworten