假设我有以下 C 代码:
void myfunction() {
time_t t = 0;
struct tm *ct;
time(&t);
ct = localtime(&t);
}
如您所见,该localtime
函数返回一个指向struct tm
变量的新指针。据我所知,要使函数返回的变量在调用者上下文中有效,它至少需要满足以下一项:
- 返回的变量必须在调用者的上下文或与调用者相关的更高上下文中声明。
- 返回的变量必须在堆上分配内存。
在我的情况下,第一点不适用,所以认为第二点得到满足是正常的。
我对吗?
如果是,这是否意味着我需要ct
在使用变量后免费调用它?
如果没有,你能详细一点吗?
谢谢!
编辑:
从回复中,我了解到要求中应该有另一点是变量在返回的上下文中可用。那应该是静态变量。还有另一种可能吗?