「C言語のスタックと自動変数」の版間の差分
提供: セキュリティ
(相違点なし)
|
2014年2月18日 (火) 00:07時点における最新版
C言語の自動変数がどのようにスタックに置かれているかについて説明します。
概要
スタックは、上位アドレスから下位アドレスに向かって、成長します。
ソースコード
/* * auto_variable.c * Copyright (C) 2014 kaoru <kaoru@bsd> */ #include <stdio.h> int main(int argc, char const* argv[]) { int a = 1,b = 2,c = 3; (void) printf ("%p\n%p\n%p\n", &a, &b, &c); (void) printf ("%d\n%d\n%d\n", *((&c)+2), *((&c)+1), c); return 0; }
コンパイル
cc auto_variable.c
実行例
% ./a.out 0xbfbfd7b0 0xbfbfd7ac 0xbfbfd7a8 1 2 3
解説
自動変数 a, b, c は、a から c の方向で、下位アドレスに向かっています。 自動変数 c のアドレスから +2 すると a、+1するとbのアドレスになります。