远程过程调用清理

时间:2011-10-01 16:38:14

标签: c memory-management malloc free rpc

我的情况如下: 我在C中实现了一个简单的RPC系统,客户端可以通过该系统调用它传递命令的远程函数。该命令在远程计算机上执行,包含输出的字符串返回给客户端。所以,函数签名是:

char* execute(char* command)

在这个函数中,我为结果字符串做了一个malloc并返回它。 该函数已发布,客户端调用它。 我的问题是:在每次远程过程调用后,我可以通过哪种方式在服务器端释放已分配的char *?

编辑:更详细地解决我的问题:这里的问题是在第一次rpc调用之后,服务器崩溃了“glibc detected free()invalid pointer”错误。在执行过程中我有类似的东西:

char* result = (char*) malloc(STRING_SIZE * sizeof(char));
...
return result;

我假设它正在尝试并且未能释放返回的结果。

1 个答案:

答案 0 :(得分:1)

这取决于使用的RPC机制。如果功能被正确标记,有些可以自动调用返回指针上的释放函数。

如果您的RPC库无法执行此操作,则必须将malloc更改为其他内容。在单线程服务器中,您可以简单地将指针返回到多线程的静态缓冲区......这取决于具体情况。