освобождение различных указателей в функции, которая повторяется несколько раз - PullRequest
0 голосов
/ 18 июня 2020

У меня есть функция void, которая отправляет значение структуры

my fun c 'повторяется несколько раз. члены структуры были распределены динамически. Так как я могу их освободить?

Я полагаю, что если я освобожу их в самой игре c ', это уничтожит отправленный объект структуры.

void func(){

    typedef struct ENTRY {
        int entry_num;
        char* English_term;
        char** translations;
        enum types type;
    }ENTRY;


    ENTRY new_entry = { .entry_num = 0,
        .English_term = temp,
        .translations = (char**)malloc(tr_amnt * sizeof(char*)),
        .type = 0
    }
    ...
    ... 

    another_function(new_entry);

    // free all pointers?

}

1 Ответ

0 голосов
/ 18 июня 2020

Да, поскольку вы никоим образом не возвращаете указатели из функции (ни через оператор return, ни через параметры функции), вы можете free() выделить выделенную память, на которую указывают эти указатели.

Ожидается, что another_function() будет иметь собственную копию переданных аргументов, если это необходимо для сохранения значения за пределами вызова функции.

...