我写了这个函数:
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函数中没有空闲,我就会有内存泄漏。我该怎么解决这个问题?
发布于 2015-09-16 13:34:27
你有几个选择:
params[0],并在函数的文档中清楚地说明这一点。const中删除input_string并完成相应的工作。如果调用方希望保持不变的副本,则调用方必须在调用函数之前复制该副本。parse_parameters的额外参数)。你把绳子复制到那里。https://stackoverflow.com/questions/32609770
复制相似问题