我创建了一个函数来计算2个timeval函数的差异。这是该函数的基本版本。分配返回参考的空间
struct timeval* getDifference(struct timeval* startTime, struct timeval* finishTime)
{
struct timeval* difference = new struct timeval;
difference->tv_sec = finishTime->tv_sec - startTime->tv_sec;
difference->tv_usec = finishTime->tv_usec - startTime->tv_usec;
return difference;
}
int main()
{
struct timeval a,b;
struct timeval* c;
gettimeofday(&a, NULL);
usleep(100000);
gettimeofday(&b, NULL);
c = getDifference(&a, &b);
}
我想知道的是如果使用struct timeval* c;
安全吗?还是应该像struct timeval* c = new struct timeval;
?
如果它是安全的,然后将释放c
免费在函数内部分配的difference = new struct timeval;
?
如果通过释放你的意思是做'删除c;'然后是它的安全,但如果你的意思是'free(c);'那么它不是。 – Naveen 2012-03-05 12:05:13
那么如果我使用free(),风险如何? – 2012-03-05 12:08:32
@PrasanthMadhavan它是未定义的行为,因为你用'new'而不是'malloc'分配。 – 2012-03-05 12:09:48