【发布时间】:2020-04-02 14:19:59
【问题描述】:
我尝试在 C 中创建一种 toString 函数,如下所示:
struct esploratore {
char nome[20];
char cognome[20];
int nascita;
int morte;
};
char *esploratoreToString(esploratore e) {
char *s = (char*) malloc(50 * sizeof(char));
snprintf(s, 50,
"%s %s %d %d",
e.nome, e.cognome, e.nascita, e.morte);
return s;
}
并以这种方式在main 中使用它:
printf("%s", esploratoreToString(e));
它可以工作,但问题是:malloc 分配的内存会被释放吗?
这是唯一的解决方案吗?
char *s = esploratoreToString(e);
...
printf("%s\n\n", s);
free(s);
【问题讨论】:
-
不,它不会被释放,除非你在你完成 steing 后在调用函数中释放它