お世話になります
VB6のメモリ解放に関して、以下を参考に下記のコードで試したのですが、
コンパイルエラーで「配列には割り当てられません」となってしまいます。
http://oshiete.goo.ne.jp/qa/3372573.html
違いは宣言の型がStringかLongしかないと思うのですが、
なにが悪いのか教えていただけないでしょうか
******* 以下 ソース
Dim wProcDat() As Long
ReDim wProcDat(1 To 1000, 1 To 768)
中略
Set wProcDat = Nothing
No.4
- 回答日時:
#補足にすぎませんが
NothingはObjectの場合だけですね。配列はErase()で初期化します。
EraseでDim時の状態に戻ります。静的配列でもできます。
そして・・・
VB6やVBAの場合、ガベージコレクションが自動的にメモリを解放してくれるので、明示的にメモリ解放する必要はあまりナイかと。解放する癖つけた方がいいのは確かですが。
------
・Eraseしなくても解放されます
→ 関数を抜ける時に未使用のメモリが解放されるため、メモリリークの心配はほとんどありません。
・Eraseしても即解放されるわけではない
→ ガベージコレクション対象にセットされるだけで、たいていは関数抜ける時解放されるみたいです。結局メモリ使用量減りません(※)。
------
リンク先はそーいうコト(※)かと。MsgBoxでメモリ増えるとか謎ですし、MsgBox表示でプログラム止まる際にガベージコレクション走りそうですが・・・バージョンによる違いなのかな。。。
回答ありがとうございます。
Eraseの使用方法は判っているつもりで、
Nothingでもできる記述があったので試していたところなんです。
No.3
- 回答日時:
失礼しました。
エラーの発生箇所は Set wProcDat = Nothing ですね。
下記によると動的配列には Erase を使うようです。
http://www.moug.net/tech/acvba/0050008.html
下記のプログラムを作ってみました。
Dim wProcDat() As Long
ReDim wProcDat(1 To 1000, 1 To 768)
wProcDat(1000, 768) = 999
wProcDat(1, 1) = 888
MsgBox wProcDat(1000, 768)
Erase wProcDat
MsgBox "Erase"
MsgBox wProcDat(1, 1)
最後のMsgBoxでインデックスが有効範囲に入りませんから、開放されているようです。
回答ありがとうございます。
Eraseの使用方法は判っているつもりで、
Nothingでもできる記述があったので試していたところなんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
メモリの解放について VB6 VBA
Visual Basic(VBA)
-
VB6.0のメモリリークについて
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
VB6 配列を初期化したい
Visual Basic(VBA)
-
5
VBの「As String * 128」とは?
Visual Basic(VBA)
-
6
VB6で、長い時間かかる処理実行中の表示の工夫について
Visual Basic(VBA)
-
7
VB6 Dir関数で52エラー発生
Visual Basic(VBA)
-
8
配列を関数に渡す方法
Visual Basic(VBA)
-
9
[VB6] フォームを閉じる方法について
Visual Basic(VBA)
-
10
VB6のプロジェクトロードエラーについて
Visual Basic(VBA)
-
11
メモリ不足
Visual Basic(VBA)
-
12
VB6のユーザーコントロールがメモリを食う
Visual Basic(VBA)
-
13
VBで構造体の配列を関数に渡す方法?
Visual Basic(VBA)
-
14
VB6で開発中…標準モジュール間での関数の呼び出し方は?
Visual Basic(VBA)
-
15
VBプログラムの終了
Visual Basic(VBA)
-
16
CommonDialogでの、キャンセル時の値
Visual Basic(VBA)
-
17
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
18
CloseとDisposeの違い
Visual Basic(VBA)
-
19
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
-
20
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でbyte配列から画像を表示さ...
-
VBA 変数名に変数を使用したい。
-
配列のペースト出力結果の書式...
-
C#,繰り返し処理での最大値の取...
-
pictureboxの名前を変数で設定...
-
VBAで配列引数を値渡しできない...
-
Excelのメモリ(配列)の上限は2G...
-
SUM関数の中身(VBA)
-
エクセルでXY座標に並べられた...
-
VBA 桁数が混在するソート
-
Dir関数で読み取り順を操作でき...
-
Excel VBA マクロ ブロック崩し...
-
配列の中の最大値とそのインデ...
-
Excelマクロ:配列データからグ...
-
countif/sumifのようなVBA関数
-
構造体?二次元配列?
-
グラフの「項目軸ラベルに使用...
-
Redim とEraseの違いは?
-
COBOLの基本的な事なので...
-
matlabでplotを使う際の横軸設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
エクセルでXY座標に並べられた...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
配列の中の最大値とそのインデ...
-
Excel2010のinputboxで複数デー...
-
Dir関数で読み取り順を操作でき...
-
大量の変数を定義するにはどう...
-
Redim とEraseの違いは?
-
VB6のメモリ解放に関して
-
CheckBoxの配列化
-
COBOLの基本的な事なので...
-
コンボボックスのインデックス...
-
構造体配列の特定のメンバーをF...
-
構造体配列内の文字列検索のよ...
-
定数配列の書き方
-
Excelのメモリ(配列)の上限は2G...
-
Segmentation Fault (メモリ制限?)
-
複数のtextboxの処理を一括で行...
おすすめ情報