1

MEMPTR を介して Progress プロシージャに返される char 配列に ( malloc を使用して) メモリを割り当てる共有ライブラリがあります。

OpenEdge のマニュアルで、Progress MEMPTR を解放するには、SET-SIZE ステートメントを使用してゼロ (0) に設定する必要があることを読みました。

だから私の質問は、これを行うことです:

SET-SIZE(mem-pointer) = 0.

SL の malloc で割り当てられた返された配列のメモリも解放されますか?

そうでない場合、プログレス プロセスの終了後に C で割り当てられたメモリを解放する関数を作成できますか?

そして最後に、この関数を作成する必要がある場合、誰かが私に何らかの方向性、リファレンスマニュアル、またはチュートリアルを教えてもらえますか?

4

2 に答える 2

1

ベスト プラクティスは、「作成して削除する」ことです。したがって、C コードは適切なタイミングでクリーンアップする必要があります。そして、4GL コードで set-size(0) を実行します。

ドキュメントは、ABL の「プログラミング インターフェイス」マニュアルにあります。それらはすべてhttp://communities.progress.com/pcom/docs/DOC-16074でオンラインです。

必要な章は次のとおりです。

http://documentation.progress.com/output/OpenEdge102b/oe102bhtml/wwhelp/wwhimpl/js/html/wwhelp.htm#href=dvpin/15dvpinch08epi.17.1.html

于 2011-03-16T18:33:20.807 に答える
0

私は Progress に精通していませんが、C ライブラリで、MEMPTR を受け取り、malloced メモリを解放し、Progress から呼び出した後、進行中の MEMPTR を解放する dealloc 関数を作成できるようです。最初の c 関数で MEMPTR にアクセスできた場合は、dealloc 関数でアクセスできるはずです。

于 2011-03-16T18:28:16.610 に答える