【发布时间】:2014-06-06 10:16:48
【问题描述】:
我的程序中有以下功能:
char *strconcat(char *str1, char *str2);
此函数执行 malloc 调用以分配两个字符串的连接。
因此,该字符串将用于这样的函数中:
void myFunction(char *inputstr);
一般情况下,我使用如下函数:
mystring = strconcat(mystr1, mystr2);
myFunction(mystring);
是否可以像这样执行调用?
myFunction(strconcat(mystr1, mystr2));
在此调用之前分配的内存是否已释放或内存湖?使用这样的函数,我没有对分配的内存的任何引用,所以我不能使用 free。
提前谢谢你。
亚历克斯
【问题讨论】:
-
你在哪里打电话
free?如果答案是“无处”,则说明内存泄漏。 -
是的,但不要忘记 free(inputstr);在我的函数中
-
@Manül 是的,这可行,但我认为这不是很好的设计而且非常脆弱。
-
@larsmans,在第二次通话中,我不会在任何地方免费通话。这是我的问题,¿即使我没有引用此内存区域的指针,是否存在内存泄漏?答案似乎是肯定的
-
@alexag:这几乎就是内存泄漏的定义。