我正在为它编写一个 Web 服务器和客户端测试存根。我对参数的内存管理有疑问。
我正在从我的客户端调用一个肥皂函数 ns1_func1(input * pInput, output* pOutput) 现在输入和输出类都包含指向其他结构的指针。
例如
类输出 { 类 abc * p1; 类定义 * p2; };
我的问题是 - 谁负责内存分配?客户端负责输入内存分配,服务器负责输出内存管理吗?
现在我的客户端代码看起来像这样
client_fn()
{
...
input inp1;
output * pOutput = NULL;
ns1_func1(&inp1, pOutput);
if(pOutput == NULL)
{
cout<<"pOut is NULL\n";
return ERR;
}
else
{
// retrive output values from pOutput
}
...
}
尽管使用soap_new_Output(soap,-1)从服务器分配pOutput,但在调用ns1_func1后我总是将pOutput设为NULL。
另外,我的理解是我们应该使用soap_new_X 来分配内存,当我们调用soap_destroy 时,这些内存会自动释放。如果我错了,请纠正我。
基本上,我在不知道在这种情况下应该由谁来处理内存分配/释放的情况下苦苦挣扎。
任何帮助都会很棒。