Моя ситуация следующая:
Я реализовал простую систему RPC в C, с помощью которой клиент может вызывать удаленную функцию, которой он передает команду. Команда выполняется на удаленном компьютере, и строка, содержащая выходные данные, возвращается клиенту. Итак, сигнатура функции:
char* execute(char* command)
Внутри этой функции я делаю malloc для строки результата и возвращаю ее.
Функция опубликована, и клиенты могут ее вызвать.
Мой вопрос: каким образом я могу освобождать выделенный символ * на стороне сервера после каждого удаленного вызова процедуры?
Редактировать: Подробнее о моей проблеме: проблема здесь в том, что после первого вызова rpc сервер падает с ошибкой «glibc обнаружено free () неверный указатель». Внутри процедуры выполнения у меня есть что-то вроде:
char* result = (char*) malloc(STRING_SIZE * sizeof(char));
...
return result;
Я предполагаю, что он пытается и не может освободить возвращенный результат.