変数は、ブロック内で「宣言」されると、
・そのブロックの中でずっと有効。
・名前(変数名)がある。
動的領域確保によって確保された領域は、
・プログラムの実行中にmalloc()により「割当て」。
・free()により「解放」。
・名前はない。(アドレスを記録しないと使えない。)
※必要なときだけ、必要な量を確保し、使い終わったら解放して、他のプログラム使用可能にする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // 変数と動的領域確保 #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]