【发布时间】:2015-04-15 21:26:22
【问题描述】:
在下面的程序中
int main(){
char * time;
struct tm timeptr;
t.tm_sec = 10;
t.tm_min = 10;
t.tm_hour = 6;
t.tm_mday = 25;
t.tm_mon = 2;
t.tm_year = 89;
t.tm_wday = 6;
time = asctime(&timeptr);
puts(time);
}
asctime() 返回的字符串的内存分配在哪里?我的意思是它是在堆或调用者/被调用函数的堆栈中分配的,还是在其他地方?如果它在堆中,那么我需要释放它吗?如果它在 asctime 的堆栈中,即使函数已将控制权返回给我,我如何访问它?如果它在调用者函数的堆栈中,它如何不破坏调用者堆栈的任何数据?我所理解的是它必须在用户空间中分配。
【问题讨论】:
-
asctime上的哪些参考资料没有提到这一点? -
在the documentation of
asctime()的返回值部分,您可能会找到答案。 -
@WhozCraig 找到了答案