我的程序中有以下函数:
char *strconcat(char *str1, char *str2);
此函数执行 malloc 调用以分配两个字符串的串联。
因此,该字符串将在如下函数中使用:
void myFunction(char *inputstr);
一般情况下,我是这样使用函数的:
mystring = strconcat(mystr1, mystr2);
myFunction(mystring);
是否可以这样执行调用?
myFunction(strconcat(mystr1, mystr2));
在这个调用之前分配的内存是否被释放或者会有内存湖?使用这样的函数,我没有任何对分配内存的引用,所以我不能使用 free。
提前谢谢你。
亚历克斯
最佳答案
Is it possible to perform the call like this?
myFunction(strconcat(mystr1, mystr2));
是的,你可以。函数参数应该是一个表达式,并且在传递给(复制到)函数参数之前评估该表达式。因此 strconcat(mystr1, mystr2)
将被评估,返回的结果将被复制到函数 myFunction
的参数中。您必须在函数中释放内存以避免内存泄漏。
关于c - Malloc 调用作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079434/