我有下面的代码块,我删除了所有不必要的部分,只留下了有问题的部分。我的目的是按功能以我需要的特定格式(YYYYMMDDHHmm)获取时间fetch_time
。为了return char array
,我用过malloc
。但是,如果我运行下面的代码一分钟,程序就会崩溃。当我通过调试工具监控代码的运行时间时,p1 指向的内存位置会增加,例如第一次迭代为 0x72120,第二次迭代为 0x72150,依此类推。所以,我怀疑它失败是因为内存问题。我想知道我做错了什么,我该如何解决这个问题?
顺便说一句,我想我可以通过定义一个全局 char 数组并在子函数中分配时间信息来解决这个问题。我想了解我在 malloc 使用中的错误并学习解决方案。谢谢你。
int main(int argc,char *argv[]){
char timedate2[13];
char *p1 = malloc(strlen(timedate2)+1);
if(!p1){exit(1);}
while(1){
p1=fetch_time();
}
}
char *fetch_time() {
char *p;
time_t rawtime;
struct tm * timeinfo;
char buffer [13];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime (buffer,13,"%04Y%02m%02d%02k%02M",timeinfo);
p = (char *)malloc(sizeof(buffer));
strcpy(p, buffer);
return p;
}