そのための Web サーバーとクライアントのテスト スタブを作成しています。パラメータのメモリ管理について質問があります。
クライアントから、soap 関数 ns1_func1(input * pInput, output* pOutput) を呼び出しています。これで、入力クラスと出力クラスの両方に、他の構造体へのポインターが含まれるようになりました。
例えば
クラス出力 { class 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_destroy を呼び出すと自動的に割り当て解除されるメモリを割り当てるには、soap_new_X を使用する必要があると理解しています。間違っている場合は修正してください。
基本的に、そのような場合に誰がメモリの割り当て/割り当て解除を行うべきかについての知識がなくてもがき苦しんでいます。
どんな助けでも素晴らしいでしょう。