gpt4 book ai didi

c - 是否可以释放在 printf 内部调用的函数(仅)的返回值(在 c 中)?

转载 作者:行者123 更新时间:2023-12-01 23:14:37 25 4
gpt4 key购买 nike

假设我正在编写一个类似 strdup() 的函数,或者为此使用 malloc() 的任何其他函数。如果我只像这样在 printf() 内部调用此函数:

printf("%s", my_function(arg));

是否可以释放函数返回的值?如果是,如何?据我所知,free() 将一个空指针作为参数,但如果您从不将返回值存储在变量中,您如何获得该指针?

最佳答案

否 - 您需要将其命名为:

char *p;

p = my_function(arg);
printf("%s", p);
free(p);

编辑

如果你陷入代码滥用,你可以这样做:

for(char *p = my_function(arg); p != NULL ; free(p), p = NULL)
printf("%s", p);

但这太可怕了......

关于c - 是否可以释放在 printf 内部调用的函数(仅)的返回值(在 c 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69230277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com