I'm rewriting an old program to do some new stuff, and suddenly I get a segmentation fault error on the following line of code:
time_t seconds_since_time_begun = time(0);
Why, oh why?
Update:
I have included the time.h header file in my code, and when I tried what pmg suggested below, both variables were 4 in size.
When I tried the following:
printf("4\n");
// time_t seconds_since_time_begun = time(0);
printf("5\n");
I still get segmentation fault right after "4" has been printed, even when the line where time() is called is commented out. "5" is not outputted. How is this possible?
Update 2:
I rebuilt my function step by step to try to isolate where the error occurred in my code, and I think I found the problem. I'm not sure what was wrong but it had something to do with a comparison between an integer array value and 0. So, I don't think the segfault was caused by my call to time(0) .. but I'm still not sure what actually happened. Anyways, problem solved. Thanks guys.
Often you will find that a segmentation fault will be caught on the incorrect line. What are the lines around it? Is it possible one of those could be causing it?
The standard library's time function take a time_t * as its argument, right? Hence, it's not > surprising you get a segfault: you're trying to dereference a NULL pointer!
time(0) or time(NULL) is the standard and accepted way to access the current time using the time function.