how to solve unhandled exception error when using visual C++ 2008?
Solution 1
Try Something like...
tm = localtime(&tv.tv_sec);
if(tm)
{
printf("TIMESTAMP-START\t %d:%02d:%02d:%d (~%d ms)\n", tm->tm_hour,
tm->tm_min, tm->tm_sec, tv.tv_usec,
tm->tm_hour * 3600 * 1000 + tm->tm_min * 60 * 1000 +
tm->tm_sec * 1000 + tv.tv_usec / 1000);
start = tm->tm_hour * 3600 * 1000 + tm->tm_min * 60 * 1000 +
tm->tm_sec * 1000 + tv.tv_usec / 1000;
}
else
{
// failed to retrive local time
}
Solution 2
"Access violation reading location 0x00000008"
An address that low is probably caused by accessing a null pointer. In this case, tm
is probably 0 because of a problem with localtime
or gettimeofday
. You get address 0x08 instead of 0x00 because the compiler is trying to read a value 8 bytes into the struct.
Solution 3
The type of member tv.tv_sec
is long
, but localtime
expects a time_t *
parameter. In VC6 this worked because both long
and time_t
were 32-bit, but in VS2008 time_t
is a 64-bit type so they are incompatible.
This should fix it:
//add to beginning of stampstart function:
time_t t;
//... other code...
//put this instead of call to localtime:
t = tv.tv_sec;
tm = localtime(&t);
Solution 4
The access violation refers address 0x00000008, which probably means that your code is accessing a field at offset 8 in a struct to which you point with a NULL pointer. I guess that localtime returns a NULL pointer. Check this.
make
Thanks to everyone who shared and share his/her idears with me ...
Updated on June 05, 2022Comments
-
make almost 2 years
Could someone please help me to solve unhandled exception error when using visual C++ 2008? the error is displayed as follow: Unhandled exception at 0x00411690 in time.exe: 0xC0000005: Access violation reading location 0x00000008
Some details:
- tm 0x00000000 {tm_sec=??? tm_min=??? tm_hour=??? ...} tm *
tm_sec CXX0030: Error: expression cannot be evaluated
...Actually when I used visual c++ 6 in the past, there weren't any error and the program was running fine. But now ehen I use visual 2008, I am getting this Unhandled exception error.
Here is the program:
... int gettimeofday(struct timeval *tv, struct timezone *tz) { FILETIME ft; unsigned __int64 tmpres = 0; static int tzflag = 0; if (NULL != tv) { GetSystemTimeAsFileTime(&ft); tmpres |= ft.dwHighDateTime; tmpres <<= 32; tmpres |= ft.dwLowDateTime; tmpres /= 10; /*convert into microseconds*/ /*converting file time to unix epoch*/ tmpres -= DELTA_EPOCH_IN_MICROSECS; tv->tv_sec = (long)(tmpres / 1000000UL); tv->tv_usec = (long)(tmpres % 1000000UL); } if (NULL != tz) { if (!tzflag) { _tzset(); tzflag++; } tz->tz_minuteswest = _timezone / 60; tz->tz_dsttime = _daylight; } return 0; } uint32_t stampstart() { struct timeval tv; struct timezone tz; struct tm *tm; uint32_t start; gettimeofday(&tv, &tz); tm = localtime(&tv.tv_sec); printf("TIMESTAMP-START\t %d:%02d:%02d:%d (~%d ms)\n", tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec, tm->tm_hour * 3600 * 1000 + tm->tm_min * 60 * 1000 + tm->tm_sec * 1000 + tv.tv_usec / 1000); /////---debugger stops here--- start = tm->tm_hour * 3600 * 1000 + tm->tm_min * 60 * 1000 + tm->tm_sec * 1000 + tv.tv_usec / 1000; return (start); }
thanks for your replies: