gpt4 book ai didi

c++ - 为返回的引用分配空间

转载 作者:行者123 更新时间:2023-11-30 02:05:27 26 4
gpt4 key购买 nike

我创建了一个函数来计算 2 个时间函数的差值。这是该函数的基本版本。

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; 吗?

最佳答案

我建议您完全不要使用指针。让参数成为引用并复制返回值:

struct timeval getDifference(const struct timeval& startTime, const struct timeval& finishTime)
{
struct timeval difference;
difference.tv_sec = finishTime.tv_sec - startTime.tv_sec;
difference.tv_usec = finishTime.tv_usec - startTime.tv_usec;
return difference;
}

关于c++ - 为返回的引用分配空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com