Malloc调用作为函数参数

时间:2014-06-06 10:16:48

标签: c malloc free

我的程序中有以下功能:

char *strconcat(char *str1, char *str2);

此函数执行malloc调用以分配两个字符串的串联。

因此,此字符串将在以下函数中使用:

void myFunction(char *inputstr);

通常,我使用如下函数:

mystring = strconcat(mystr1, mystr2);
myFunction(mystring);

是否可以像这样执行呼叫?

myFunction(strconcat(mystr1, mystr2));

分配的内存是否已取消分配或在此呼叫之前会有内存湖泊?使用这样的函数,我没有任何对已分配内存的引用,所以我不能使用free。

提前谢谢。

亚历

1 个答案:

答案 0 :(得分:0)

  

是否可以像这样执行呼叫?

myFunction(strconcat(mystr1, mystr2));   

是的,你可以。函数参数应该是一个表达式,并且在传递给(复制到)函数参数之前计算该表达式。因此,将评估strconcat(mystr1, mystr2),并将返回的结果复制到函数myFunction的参数中。您必须在函数中释放内存以避免内存泄漏。