c - Malloc 调用作为函数参数

标签 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。

提前谢谢你。

亚历克斯

最佳答案

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/

相关文章:

c - 返回前释放内存

c - 使用 g_malloc0 后释放内存

同时为静态库和可执行文件创建 makefile

c - C 中 size_t 类型的 malloc 参数的限制是什么?文档说它有 UINT_MAX 的上限,但我不能超过 INT_MAX

关于 C 中 malloc 和 calloc 函数的混淆

c - 您如何在函数内正确分配结构?

c - 在c中得到 "free(): invalid pointer"

c - 为子进程设置时间限制

C从int转换为char

c++ - 给定源文件的 header "corresponding"是否有技术名称?