VBとDLL(VC)間でメモリの確保と開放を行うには?


プッカ  2003-12-11 20:27:25  No: 110624

VBとdll(VC)との間で文字列のやりとりを行いたいのですが、文字列のサイズが大きいため(1Mバイトくらい)
↓のようなことをやりたいと考えています。
VBでメモリを確保し、dll(VC6)で確保したメモリに文字列を入れる。
VBで画面に表示し、メモリを開放する。
------------------
※VB(VB6)
'メモリ確保
AAA = GlobalAlloc(  GMEM_MOVEABLE, 10000 );

'dll呼び出し
VCdll( ByRef AAA )

'画面表示
txt1.text = AAA

'メモリ開放
GlobalFree( AAA )

※dll(VC6)
VCdll( char *AAA ) {

    sprintf( AAA,"文字列" );

}
------------------
又はdll(VC)でメモリ確保し、VBで表示した後に開放することなどはできないでしょうか。
質問内容がわかりにくいかもしれませんが、どうぞよろしくお願いします。


特攻隊長まるるう  2003-12-19 01:50:33  No: 110625

[VB6.0]で Alloc 系の関数は無いと思います。
変数を宣言した時点でメモリ領域を割り当ててるはずです。
単純に

Dim AAA As String
'//////////////////////////
'// VC側の処理
'//////////////////////////
AAA = ""

でいいのではないでしょうか?。あとはタスクマネージャなどで
メモリの使用量の確認をしつつ、もう少し具体的なメモリの無駄使いが
確認できてから考えるので良いと思います。


ねろ  2003-12-19 18:05:16  No: 110626

配列のスコープを狭くしておけばそこを出た時点で、メモリーが
足りなくなればOSによって適当に捨てられますよ。
たとえばSubの中で宣言するとか。
>文字列のサイズが大きいため(1Mバイトくらい)
って大きいのかな?
この位が心配になるならメモリーの増設を。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加