malloc problem

C++:
if( NULL == (temp = (double*)realloc(temp, _msize(temp) + werte_pro_tag * tage * sizeof(double)) ))
		{
			printf("\nEs konnte kein Speicher reserviert werden!");					
			exit(1);	
		}
		printf("\nNeuer Speicher ist reserviert!");		
		//HIER KOMMT ER NICHT MEHR HIN...WARUM?
		for(i=0; i<tage; i++)
		{
			printf("\nTag: %d\n", i+1);
		
			for(j=0; j<werte_pro_tag; j++, k++ )
			{
				printf("  Temperatur %d: ", j+1 );
		      while( 1 != scanf ( "%lf", &temp[k] ))
				{
					puts("Fehler in der Eingabe, bitte wiederholen!");
		         while(getchar () != '\n');//puffer leeren
				}			
         while(getchar () != '\n');
			}		
			printf("     Luftdruck: ");
			scanf("%lf", &luft[i]);
		}

Allerdings fällt mir jetzt auf, dass er garnicht mehr die Daten holt. Ich kriege die Anzeige, dass Speicher reserviert wurde und dann bricht er ab. Geht nicht mehr in die for-schleife.
Die Variante wo ich den "runtime-error" hatte, hab ich leider nicht mehr. Hatte es da versucht mit einem Hilfspointer, zwischen zu speichern.
 
Aaalso, 1: Runtimeerror ist keiner mehr, das ist schon mal gut
2: Zu der stelle mit deinem "Hier kommt er nicht mehr hin" -Kommentar kommt er eben doch hin
Einfach ein printf("ABC"); reinschreiben und schauen ob ers ausgibt...
Das Problem ist, dass du ja nur in die Schleife reinkommst, wenn tage größer als 0 ist
Tage ist ein int.
Und wie liest du es in scanf ein?
Als %lf.
lf ist für double gedacht, da kommt nichts sinnvolles heraus (bei einer Eingabe von zB 2 wird es eben 0)
Richtig müsste es %d heißen
 
@sheel..DANKE!! hatte es beim scanf garnicht gesehen...Jetzt läufts auch.
Hab mal eine andere Frage, weist du wann ein "runtime-error" denn auftritt?
Kann es an malloc/realloc liegen (also, wenn er kein Speicher bekommen würde)

Gruß
Manda
 
Naja, "Runtime Error" bedeiutet ja eigentlich nur Laufzeitfehler,
also ein Fehler während das Programm läuft. Das kann viele Ursachen haben.

Bei malloc/realloc fallen mir spontan zwei Sachen ein:
1: Es konnte nichts reserviert werden, und es wird auf den (nicht vorhandenen) Speicher zugegriffen
Bei dir kann das nicht passieren, du prüfst ja immer, ob der Rückgabewert NULL ist und unternimmst was dagegen
2: Bin mir nicht ganz sicher, aber wahrscheinlich auch, wenn man dem malloc/realloc als Byteanzahl 0 übergibst
 

Neue Beiträge

Zurück