Hallo,
ich habe ein kleines Progrämmchen zu Laufzeittests geschrieben und habe ein Problem. Ich bekomme immer die Fehlermeldung Speicherzugriffsfehler. Beim kompilieren gibts keine Fehler. Die problematische Stelle das Codes sind die Zeilen 25 - 28, wo die Werte aus den Strukturen gelesen werden:
Hier der Quelltext:
Ich würde mich freuen, wenn mir jemand weiterhelfen könnte, da ich mit meinem Latein am Ende bin. Vielen Dank
ich habe ein kleines Progrämmchen zu Laufzeittests geschrieben und habe ein Problem. Ich bekomme immer die Fehlermeldung Speicherzugriffsfehler. Beim kompilieren gibts keine Fehler. Die problematische Stelle das Codes sind die Zeilen 25 - 28, wo die Werte aus den Strukturen gelesen werden:
Code:
start_sec = t->start_ts->tv_sec;
start_usec = t->start_ts->tv_usec;
stop_sec = t->stop_ts->tv_sec;
stop_usec = t->stop_ts->tv_usec;
Hier der Quelltext:
Code:
#include <sys/time.h>
#include <stdio.h>
struct tstamp {
struct timeval *start_ts;
struct timeval *stop_ts;
};
struct timezone *tz;
// Setzt den Startpunkt für die Zeitmessung
void start(struct tstamp *t){
gettimeofday(t->start_ts,tz);
}
// Setzt den Stoppunkt für die Zeitmessung
void stop(struct tstamp *t){
gettimeofday(t->stop_ts,tz);
}
// Wertet Start und Stoppunkt zu einer Ausführungszeit aus
unsigned long extime(struct tstamp *t){
int start_sec,start_usec,stop_sec,stop_usec,dif_usec,dif_sec;
unsigned long ret_usec; // Rückgabewert in Mikrosekunden
start_sec = t->start_ts->tv_sec;
start_usec = t->start_ts->tv_usec;
stop_sec = t->stop_ts->tv_sec;
stop_usec = t->stop_ts->tv_usec;
dif_sec = stop_sec - start_sec;
dif_usec = stop_usec - start_usec;
//Falls dif_usec negativ ist
if(dif_usec < 0){
dif_sec = dif_sec - 1; // eine Sekunde abziehen
ret_usec = 1000000 + dif_usec; // Differenz in Mikrosekunden ermitteln
}
ret_usec = ret_usec + dif_sec * 1000000;
return (ret_usec);
}
int main(void){
int i;
int a = 99;
struct tstamp *ts;
start(ts);
// ein wenig Rechenzeit verbraten
for(i = 0 ; i < 1000 ; i++){
a = a*a*a*a*a*a;
}
stop(ts);
printf("%lu\n",extime(ts));
}
Ich würde mich freuen, wenn mir jemand weiterhelfen könnte, da ich mit meinem Latein am Ende bin. Vielen Dank