[英]How to free memory after strsep()?
我寫了這個函數:
char** parse_parameters(const char* input_string, int num_params, char** params) {
char *temp_string = strdup(input_string);
char **pp;
for (pp = params; (*pp = strsep(&temp_string, ";")) != NULL;) {
if (**pp == '\0')
break;
pp++;
if (pp >= ¶ms[num_params])
break;
}
free(temp_string);
return params;
}
我正在使用這樣的:
char *parameters[3];
parse_parameters("some;delimited;string", 3, parameters);
根據我對parameters
數組內部的理解,我指向的是已經釋放的內存。 但是,如果我沒有在parse_parameters
函數內部parse_parameters
發生內存泄漏。 我該如何解決?
您有兩種選擇:
params[0]
並在函數的文檔中明確說明。 input_string
刪除const
並input_string
完成工作。 如果調用者想保留不變的副本,則調用者必須在調用函數之前進行復制。 parse_parameters
額外參數)。 您將字符串復制到那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.