【C#】配列の中身をメモリで確認する方法

C言語の時は、ポインタの中身をメモリで参照する事が多かったのですが、C#をメインで触るようになってからは、メモリの中身を参照することは無くなってしまい、いざ、やってみようとすると、やり方がわかりづらかったので記事にしました。

まず、Visual Studio にメモリのウィンドウを表示するのですが、ウィンドウ表示メニューがステップ実行中にしか表示してくれないため、メモリを見たい場所でブレークポイントを置いて停止させます。

 

この状態で、Visual Studio のメニューの デバッグ→ウィンドウ→メモリ→メモリ1(1) と選択するとメモリウィンドウが表示されます。

 

 

さらにメモリで表示させたい変数をメモリウィンドウへDrag&Dropすることで、配列の中身をメモリで参照することができます。

 

 

と、本当にやりたかったのは、二次元配列の時に、A[x, y]のように、左側の添え字の方からメモリに値が格納されていくのか? それともA[y, x]のように右側の添え字の方から格納されるのか?を確認したかったのですが、確認のため、

var arr2D = new byte[16, 16];

for (int j = 0; j < 16; j++)
{
    for (int i = 0; i < 16; i++)
    {
        arr2D[j, i] = (byte)((j << 4) + i);
    }
}

のようなソースコードで、8ビット(1バイト)中の下位4ビットに i の値を、上位4ビットに j の値を格納するプログラムをステップ実行で確認したところ、メモリへは、以下のように格納されていました。

 

 

ということで、多次元配列の時、配列の値は右側の添え字の方から格納される事がわかります。

 

こっち↓の方が並びは分かりやすいですね。

 

C# へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください