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# へ戻る
コメント