【发布时间】:2014-05-14 08:18:33
【问题描述】:
我在函数中使用malloc,然后返回指针。我必须在哪里使用函数free(ret_str) 释放内存?在function_name() 方法内部还是外部?以及如何做到这一点?
功能:
char* function_name(void)
{
int state = 3;
//char *ret_str = malloc(40 * sizeof(char));
Send("string");
state = wait_response();
if(state == 1)
{
char *ret_str = malloc(40 * sizeof(char));
strcpy(ret_str, rx_buffer+(strcspn(rx_buffer, "?")+5));
strncpy(ret_str+strcspn(ret_str, "\r"), " ", 1);
strncpy(ret_str+strcspn(ret_str, "\n"), ret_str+strcspn(ret_str, "\n")+3, 2);
ret_str[strcspn(ret_str, "\n")] = '\0';
empty_buffer(p_rx_buffer);
return ret_str;
}
else
{
empty_buffer(p_rx_buffer);
return "D_ERROR";
}
}
函数调用:
char *current_setting;
current_setting = function_name();
free(current_setting);
【问题讨论】:
-
这一切都取决于你的对象的生命周期。
-
在输入
if语句后执行malloc否则会出现内存泄漏。
标签: c function pointers malloc free