「C言語のスタックと自動変数」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「C言語の自動変数がどのようにスタックに置かれているかについて説明します。 __TOC__ == 概要 == スタックは、上位アド...」)
 
(相違点なし)

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

関連項目