変数と動的領域確保(malloc)

変数は、ブロック内で「宣言」されると、
・そのブロックの中でずっと有効。
・名前(変数名)がある。

動的領域確保によって確保された領域は、
・プログラムの実行中にmalloc()により「割当て」。
・free()により「解放」。
・名前はない。(アドレスを記録しないと使えない。)
※必要なときだけ、必要な量を確保し、使い終わったら解放して、他のプログラム使用可能にする。

// 変数と動的領域確保
#include <stdio.h>
#include <stdlib.h>

struct list{
  int key;
  struct list *next;
};

int main(void) {

struct list a, *p;
	
  a.key = 20;
  a.next = NULL;
	
  p = (struct list*)malloc(sizeof(struct list));
  p->key = 21;
  p->next = NULL;
	
  printf("a:%0x=[%d,%0x]\n", &a, a.key, a.next);
  printf("p->%x=[%d,%x]\n", p, p->key, p->next);
	
  free(p);
  printf("p->%x=[%d,%x]\n", p, p->key, p->next);
	
  return 0;
}

C:\TDM-GCC-64\work>prog00
a:62fe30=[20,0]
p->9b1380=[21,0]
p->9b1380=[10158416,9b74f0]

カテゴリー: C パーマリンク