我有以下两个功能。函数get_string_data(line)
malloc 一个字符串并返回它。后来我像这样使用它:
char *get_string_data(char *) {
char *sec_tok, *result;
Split *split;
split = split_string(line, ' ');
sec_tok = split -> tail;
if (starts_with_char(sec_tok, '\"') && ends_with_char(sec_tok, '\"')) {
result = (char *) malloc(strlen(sec_tok) + 1);
strcpy(result, sec_tok);
free(split);
result++;
*(result + (strlen(result) - 1)) = '\0';
return result;
}
free(split);
return NULL;
}
void handle_string_instr(char *line) {
char* data = get_string_data(line);
...a few lines later, after I used the data...
free(data);
... end of the world happens here...
}
现在尝试释放字符串时,一切都会崩溃(程序收到信号 SIGABRT,已中止。)。为什么会发生这种情况,释放内存的正确方法是什么?