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のアドレスになります。

関連項目




スポンサーリンク