Да, это безопасно, но, как правило, вы хотите избежать выделения памяти в функции и освободить () ее в другой.
Я бы предложил изменить прототип нашей функции getDifference
, чтобы получить указатель на разницу во времени:
int getDifference(struct timeval* startTime, struct timeval* finishTime,
struct timeval *difference)
Теперь вы можете сделать так, чтобы ваш главный поступок был таким:
int getDifference(struct timeval* startTime, struct timeval* finishTime, struct timeval *difference)
{
if( difference && startTime && finishTime) {
difference->tv_sec = finishTime->tv_sec - startTime->tv_sec;
difference->tv_usec = finishTime->tv_usec - startTime->tv_usec;
return 0;
}
return -1;
}
int main()
{
struct timeval a,b;
struct timeval c;
gettimeofday(&a, NULL);
usleep(100000);
gettimeofday(&b, NULL);
if( getDifference(&a, &b, &c) == 0 )
{
// success !!
}
}