C言語のスタックと自動変数
提供: セキュリティ
スポンサーリンク
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のアドレスになります。
関連項目
ツイート
スポンサーリンク