アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6やVBAで動的配列をERASEしたのですが、タスクマネージャーで見ても使っているメモリを解放しているように見えません。
動的配列の内容をMsgBoxで表示させるたびにメモリがどんどん減っていきます。Eraseしても戻りません。
Redim ArryaDat(0)とかでも無理でした。
APIを使って(どんな方法)でも、メモリを解放したいのですが、可能でしょうか?

Dim ArrayDat() as String

Redim ArrayDat(100)
ArrayDat(0) = "なんとか"
ArrayDat(1) = "かんとか"
...
ArrayDat(100) = "メモリを解放したい"

for i = LBound(ArrayDat) to UBound(ArrayDat)
MsgBox("どんどんメモリが消費されていく・・ [" & ArrayDat(i) & "]")
next i

Redim ArrayDat(0)
Erase ArrayDat
NsgBox("解放したつもり? 誰か教えて")


あと、.NETではメモリ解放はどうなっているのでしょうか?
まだ使いませんが、頭の片隅に入れておきたいです。

A 回答 (1件)

Erase は、配列の要素をクリアしただけで、エリアとしては


確保されています。
完全に解放させるには、Nothingを代入させないと解放されません。
Set ArrayDat = Nothing

また、APIでメモリ解放する場合は、APIを使って割り当てたメモリ
で良く使用しますが、今回の場合は、そこまで行っていないと
思います。

ご検討下さい。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!