このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

メモリブロック

  1. どこ?=場所=先頭アドレス
  2. どのくらい?=サイズ
  3. なに?=中身

メモリセルとは区別する。メモリセクション/セグメントともちょっと別。

xがメモリブロックを指すなら、

  1. どこ → &x
  2. どのくらい → sizeof(x)
  3. なに → 例えば次の関数


#include

void dumpmem(unsigned char *p, unsigned size)
{
static int hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};

unsigned char *bound;
int u;
for (bound = p + size; p < bound; p++) {
u = *p;
putchar(hex[(u&0xF0)>>4]); // 上位ニブル
putchar(hex[u&0x0F]); // 下位ニブル
putchar(';'); // 1バイトの終わりを示す
};
}

// お試し
main()
{
int foo[] = {1, 0x230F, 0x450F0, 0x670F00, 0x890F000};
dumpmem((unsigned char*)foo, 5*4);
}

  • 変数の宣言は(省略可能ではあるが)だが必須、なぜか?
  • 関数の宣言はイイカゲンでどうでもよかった、なぜか?