変数は、ブロック内で「宣言」されると、
・そのブロックの中でずっと有効。
・名前(変数名)がある。
動的領域確保によって確保された領域は、
・プログラムの実行中に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]