Как освободить память, выделенную на моем RPC-сервере?
У меня есть сервер RPC, который передает большое количество данных переменной длины клиенту. Файл.x выглядит примерно так
struct file
{
opaque data<>
};
В рутине сервера у меня есть
struct file *transfer_1_svc(...)
{
struct file;
file.data.data_val = malloc(...);
return &file;
}
Мой вопрос заключается в том, кто освобождает данные, выделенные в рутине сервера?
1 ответ
Это зависит от кода вашего сервера. Если вы используете rpcgen для создания заглушки сервера, вы можете использовать функцию xdr_free, которая освободит результат. Подробности см. В руководстве разработчика SunRPC: https://docs.oracle.com/cd/E19683-01/816-1435/rpcgenpguide-21470/index.html