C освободить всю выделенную память одним вызовом free() ⇐ Linux
-
Anonymous
C освободить всю выделенную память одним вызовом free()
Я работаю с функцией 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()? Или есть какой-то способ освободить всю выделенную память одним вызовом (зная все указатели на соответствующие участки памяти)?
Я работаю с функцией 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()? Или есть какой-то способ освободить всю выделенную память одним вызовом (зная все указатели на соответствующие участки памяти)?
Мобильная версия