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()? Или есть какой-то способ освободить всю выделенную память одним вызовом (зная все указатели на соответствующие участки памяти)?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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