我的这一句程序运行抛出异常了
printf( "Current time is %s\n", asctime(when) ); //struct tm *when
vs自动把调式点定位在output.c文件里,可见应不是asctime调用问题。
查看asctime函数原型,发现其返回char *类型指针。
问题:asctime以及其他C函数库中的一些返回字串指针的函数内部如何实现字串?
若是定长数组,那么函数返回时应该自动销毁了,肯定不行?
若是动态分配,那么要由我们手动删除其返回值。而在msdn示例中没有发现这样语句。而且如printf("%s", asctime())这样肯定无法释放动态内存,因为返回值为临时变量,而这样句子也是msdn中有的。
是msdn错了,还是该函数有更高明的实现方法既能得到返回字串,又能防止内存泄漏?