2011-08-04 17 views
1

Linuxでは、 "静的"変数がBSSセグメント(実行されていないコード)に存在し、 "ローカル"変数が "スタック"に存在します。 これは、関数のローカルな静的変数がBSS領域に存在することを意味します。スコープが機能そのものの中にあることを確認するためにブックを保管する方法は?静的変数は関数のローカル

答えて

3

変数が格納される場所は、スコープとは関係ありません。これは通常、スコープ(変数へのアクセス)を制限するコンパイラ自体です。あなたはのような文がある場合:関数内で

static int xyzzy; 

を、xyzzyにかかわらず、それは静的記憶域期間を持つという事実を、その関数の外部コードによってアクセスが許可されることはありません。

実行しようとすると、実行時のチェックではなくコンパイル時エラーが発生します。

実際には、ローカルの静的変数に影響を与えますが、バッファオーバーフロー(コンパイラが許可しない)によってではなく、バッファオーバーフロー(存在する記憶領域に実行中)などに影響します。

+0

ありがとうございます! – sril

関連する問題