vc-3. ダンプリスト,配列
(Visual Studio C++ の機能と操作演習,
全5回)
1
金子邦彦
https://www.kkaneko.jp/pro/vc/index.html
メモリ上でのデータ表現の理解、ダンプリストの読み方、
配列のメモリ配置の確認方法の習得
【学習内容の構成】
1. ダンプリスト:メモリの中身をバイト単位・16進数
で表示する形式
2. 配列:同じ型の要素が連続したアドレスに格納され
るデータ構造
3. デバッガ操作:ブレークポイント設定、ローカル
ウィンドウ、メモリウィンドウによる変数とメモリ
の観察
• 前提:Visual Studio 2015の基本操作、C/C++の配列と
繰り返し構文
• 意義:プログラムの内部動作の可視化によるデバッグ
能力の向上
2
3-1 ダンプリスト
3
4
• メモリはバイト(8ビット)単位に区切られている
• 各バイトには0から始まる通し番号が付けられてい
る。これがアドレス(番地ともいう)
01
00
00
00
02
00
00
00
03
00
メモリ内のデータは
アドレス
0 1 2 3 4 5 6 7 8 9
メモリとアドレス
ダンプリストの例
5
アドレス
メモリの中身
バイト単位で区切られて表示.
表示は16進数
ダンプリストの例
6
アドレスは
0x002f8130
アドレスは
0x002f8131
アドレスは
0x002f8132
クイズ
7
アドレス
メモリの中身がバイト単位
で区切られて表示
メモリの中身
を文字に置き換え
て表示
このアドレス
は?
このアドレス
は?
クイズの答え
8
アドレス
メモリの中身がバイト単位
で区切られて表示
メモリの中身
を文字に置き換え
て表示
0x002F814C
左のアドレス
表示で分かる
0x002F8150
これは 0x002F814C に 4 足した値
4つ右隣
り
3-2 配列
9
10
3-2 配列
• 配列は、同じ型の要素の並び.
• 0から始まる番号(添字)が付いている
• コード化されて、メモリに格納されるとき、
要素が順にメモリに格納される
各要素のサイズは同じ
配列
11
80 →
60 →
40 →
20 →
30 →
50
00
00
00
3c
00
00
00
28
00
00
00
14
00
00
00
数値
(10進数)
4バイトの数値にコード化した場合
1e
00
00
00
16 進数
C/C++ での配列と繰り返し
12
i の値は 0, 1, 2, 3, 4
と変化し,全部済んだら終わる
繰り返す処理
パソコン演習
• Visual Studio 2015 を起動しなさい
• Visual Studio 2015 で、Win32 コンソールアプリ
ケーション用プロジェクトを新規作成しなさい
13
プロジェクトの「名前」は何でもよい
• Visual Studio 2015 のエディタを使って、ソース
ファイルを編集しなさい
14
6行追加
15
• ビルドしなさい.ビルドのあと「1 正常終了、
0 失敗」の表示を確認しなさい
→ 表示されなければ、プログラムのミスを自分で
確認し、修正して、ビルドをやり直す
16
• Visual Studio 2015 で「int i」の行に、ブレークポ
イントを設定しなさい
17
① 「 int i;」の行をマ
ウスでクリック
② 「デバッグ」→
「ブレークポイントの
設定/解除」
③ ブレークポイント
が設定されるので確認.
赤丸がブレークポイン
トの印
• Visual Studio 2015 で、デバッガーを起動しなさい.
• 「int i;」の行で、実行が中断することを確認しな
さい
あとで使うので、中断したままにしておくこと
18
「デバッグ」
→ 「デバッグの開始」
「int i;」の行で実行が
中断している
• 「int i;」の行で、実行が中断した状態で、変数の
値を表示させなさい.手順は次の通り.
19
※ 次ページに拡大図
①「デバッグ」
→ 「ウインドウ」
→ 「ローカル」
② 変数名と値の対応表が
表示される
20
9. ローカルウインドウで配列 y の先頭アドレスを調べなさい
y の先頭アドレスは、起動のたびに
変化する可能性がある.
「0x」が付いているのは16進数
• メモリの中身を表示させなさい.手順は次の通り.
21
①「デバッグ」
→ 「ウインドウ」
→ 「メモリ」→「メモリ1」
② メモリの中身がダンプ
リスト形式で表示される
22
① 配列 y の先頭アドレス
• 配列 y の先頭アドレスを、
メモリウインドウの「アドレス」のところに書き写して,
Enter キーを押す
「0x00229150」のように
頭に 0x を付ける
23
• メモリウインドウに、配列 y の中身が表示される
ので確認する
00 が並んでいる
• ステップオーバーの操作を行いながら、メモリの
中身の変化を確認しなさい.
24
「デバッグ」
→ 「ステップオーバー」
(あるいは F10 キー)
• 次のことを再確認しなさい
25
16進数
50
3c
28
14
1e
10進数
80
60
40
20
30
• 最後に、プログラム実行の再開の操作を行いなさ
い。これで、デバッガーが終了する。
26
「デバッグ」
→ 「続行」