我的程序中有以下功能:
char *strconcat(char *str1, char *str2);
此函数执行malloc调用以分配两个字符串的串联。
因此,此字符串将在以下函数中使用:
void myFunction(char *inputstr);
通常,我使用如下函数:
mystring = strconcat(mystr1, mystr2);
myFunction(mystring);
是否可以像这样执行呼叫?
myFunction(strconcat(mystr1, mystr2));
分配的内存是否已取消分配或在此呼叫之前会有内存湖泊?使用这样的函数,我没有任何对已分配内存的引用,所以我不能使用free。
提前谢谢。
亚历
答案 0 :(得分:0)
是否可以像这样执行呼叫?
myFunction(strconcat(mystr1, mystr2));
是的,你可以。函数参数应该是一个表达式,并且在传递给(复制到)函数参数之前计算该表达式。因此,将评估strconcat(mystr1, mystr2)
,并将返回的结果复制到函数myFunction
的参数中。您必须在函数中释放内存以避免内存泄漏。