C/C++だと良く使うメモリの状態を確認する方法
(あえて記事にするようなものでもないかもしれないけど)
Visual Studio 2019を使っているけど、他のバージョンでもさほど差はないはず。
基本情報とかで2進数や16進数などを勉強する場合なども
実際にメモリを見たほうがわかりやすい事もあると思うので、そういう場合にも使えなくはないかも?
メモリウィンドウを出す
1. 適当にブレークポイントを置いて処理を止める
2. メモリウィンドウを表示する
メニューバーのデバッグ(D) → ウィンドウ(W) → メモリ(M) と辿っていきメモリウィンドウを表示する
3. メモリウィンドウがでる
多分このようなものが出るはず。
アドレス欄にメモリのアドレスを入力すると、そのアドレス付近のメモリの内容が表示されるというもの
C/C++で何かを作っているときはとても重宝する。
変数の中身を見てみる
num
という変数がメモリウィンドウで確認してみる。
C/C++では変数名の前に&をつけると、その変数のアドレスになるので
メモリウィンドウのアドレス欄に「&num」と入力するとこうなる↓
この状態でEnter!
アドレス欄はnum
のアドレスになる。
num
には0xFF
を入れていたので、メモリでもff
(一番左上)が入っている事が確認できた。
※メモリウィンドウは0xFFじゃなくて0xffと小文字で表示されるけど同じもの。
おまけ
エンディアンを見る
4byteのint
の変数num
を見てみる。
num
には0xA0B0C0D0
を代入しているけど、メモリウィンドウではd0c0b0a0
となっている。
これはエンディアンというもので、ざっくりいうと人間は1234の方が見やすいけど、メモリは4321と
桁を逆にして持っていた方が都合がいいケースがあり、Windowsは逆持ちが基本なのだ。
このあたりはエンディアンとかリトルエンディアン、ビックエンディアンなど調べてみるといいだろう。
配列を見る
char型の配列、要素は4つで4byteである。
メモリウィンドウを見ると、01 02 03 04
と配列の中身が並んで格納されていることが確認できる。