C освободить всю выделенную память одним вызовом free()Linux

Anonymous
C освободить всю выделенную память одним вызовом free()

Сообщение Anonymous »


Я работаю с функцией C freeMemory(), которая получает на вход ряд указателей и освобождает занятую ими память следующим образом:

void freeMemory(char **parallel_commands, struct command *comands[], size_t num_parallel_commands) { бесплатно (parallel_commands); for (size_t i = 0; я num_argumentos != 0; cmd++) CleanCommand (CMD); бесплатно (команды [я]); } } Можно предположить, что внутри функции cleanCommand() есть функция free (эквивалент вызова free()). Поскольку в функции есть вложенные циклы и на каждой итерации free приходится вызывать операционную систему для освобождения необходимой памяти, этот процесс становится неэффективным.

Есть ли способ распараллелить освобождение памяти внутри функции freeMemory()? Или есть какой-то способ освободить всю выделенную память одним вызовом (зная все указатели на соответствующие участки памяти)?

Вернуться в «Linux»