DLL関数から、引数として上位にデータをかえすには?

解決


まさよ  2003-06-22 12:07:17  No: 51582  IP: [192.*.*.*]

現在、VC++.NETでDLLを作成中です。

EXE側でLoadLibraly関数を使ってDLL関数を呼び出しています。
DLL側では、char*型引数で渡って来たアドレスに、char型のデータの先頭アドレスを入れて呼び元にデータを返そうとしているんですが、うまく帰りません。
どうしたら、上位にデータを返せますか?

DLL内の動き
int  関数名(char* data){
   char kekka[224];
   
   data = &kekka[0];
}

編集 削除
瀬戸っぷ  2003-06-22 15:36:14  No: 51583  IP: [192.*.*.*]

> DLL内の動き
> int  関数名(char* data){
>    char kekka[224];

>    data = &kekka[0];
> }

今までプログラミングしていたであろう他の関数も、
この様にアドレスを返すように作っていたのでしょうか?
もしそれで動いていたというのであれば、単に運が良かっただけです。

ローカル変数の寿命はそのブロックを抜けるまでです。
この場合、関数を抜けた時点でkekka[224]の内容は保証されなくなります。
malloc等でメモリを確保し
そのアドレスを返す(もちろん不要になった時に解放が必要)か、
呼び出し側で結果を受け取るためのメモリを用意しそこに書き込むようにする必要があります。

編集 削除
まさよ  2003-06-22 21:58:44  No: 51584  IP: [192.*.*.*]

返答ありがとうございます。

呼び出し側に書き込むようにします。
ありがとうございました。

編集 削除