Для кода ниже: (1) "main" вызывает функцию "f1". (2) функция "f1" выполняет некоторые функции хруста; создает массив "char" с malloc, а затем возвращает указатель массива на главный (без выделения выделения -freeing-array).
У меня есть 3 вопроса, связанные со случаем: (1) Я предполагаю, что хотя функция "f1" завершена, выделенный массив char по-прежнему остается выделенным до тех пор, пока основная программа полностью не завершится. То есть выделенная память по-прежнему принадлежит основному, и никакой другой процесс не может получить доступ (я имею в виду, вмешиваться) его извне. Я прав? (2) Должен ли я освобождать массив (выделенный в "f1" ) до того, как программа завершится (или освободится, как только закончится основная программа)? (3) Если ответ на второй вопрос "да", то как вы освободите массив, выделенный в другой функции?
note: Я хочу оставаться в пределах чистого c и не переливаться на С++.
char *f1 (...) {
...
...
char *fTmp = malloc (length1 * sizeof (char));
char *fData = malloc (length2 * sizeof (char));
...
...
free (fTmp);
return (fData);
}
int main () {
char *fData = f1 (...);
...
return (0);
}