概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


記憶クラス
2006年10月30日 (月) | 編集 |
車庫のシャッターを上げるとそこにカメムシが居る季節になってきた。
それどころか入り口へ近付いた時点でカメムシスメルが漂ってくることすらある訳だが。

何故こいつらは毎日開けられるシャッターの下に潜り込むのか。
あまつさえ閉められたシャッターに潰される固体すら出る始末。
勝手に潜り込んで潰れて警戒臭を出して仲間に危険を知らせるくらいなら、そこらにある野山なんかで倒木とか見つけて仲間集めて好きなだけ冬眠に勤しんでみてはどうだろうか? 
うちは山も近いのでそういう自然には事欠かないし、悪い話ではないと思うがね!

っつか、頼むからうちの車庫に来ないで欲しい。
そもそも潰れて警戒臭出してる奴が居るんだから寄って来るべきではない。
潰れている奴が何の為に臭いを出していると思っているのか。



さて。
では久し振りに勉強しようか。
勿論カメムシの勉強じゃねーぞ。
随分間が空いたので今までのを度忘れしている感もあるが、記憶クラスの話だ。
Cでは変数や関数の性質を決めるのに、型と記憶クラスという概念を用いるのだそうだ。型は今まで散々やってきたな。intとかcharとかlongとかdoubleとかのアレだ。型は宣言と同時にデータのサイズを規定していたりもするんだが、これに対し、記憶クラスはそのデータがメモリ上のどこに取られるかを規定しているのだそうだ。

変数を割り当てる記憶領域としては、
  • メモリのスタック
  • メモリの静的領域
  • CPUのレジスタ
等が挙げられるらしい。

スタックってのはデータ構造の1つで、データを下から順番に積んでいき、取り出すときは上から順番に取り出していく、さながら棚(stack)のような方式の構造だそうだ。
関数の開始と終了の度に変数の割り当てを繰り返すので変動的だそうな。

静的領域はスタックの逆で、変数割り当ての変動がなく、プログラムの始まりから終わりまで同じ変数が割り当てられる領域だそうだ。動きがないから静的、と。
同じ属性意味する用語としては静的マスカレイドなんかが有名だな。

レジスタってのはCPUが持っている記憶領域だそうだ。
メモリとどっちが早いんだかは知らないが、メモリの方が早いんじゃないかね。
多分。

で、これらの記憶領域を指定するのが記憶クラス指定子なのである。
記憶クラス指定子には以下のものがあり、
  • auto…スタック
  • static…静的領域
  • extern…既に定義されている外部変数の使用宣言
  • register…CPUレジスタ
にそれぞれ対応し、

[記憶クラス指定子] 型 変数名 [,変数名…]

という形式で宣言したりする。
最後の[,変数名…]の意味がよく分からないが、まあそのうち出てくるだろう。
なお、関数内部での宣言において記憶クラス指定子を省略するとautoと解釈されるらしい。というか今までこんな宣言なんぞしてこなかったわけで、つまり、今までの変数はautoとして解釈されてきたわけであり、そしてこれらの変数を自動変数と呼ぶらしい。
Cで使う変数の大半はautoなので、

auto int i;

となるところを省略して、

int i;

と書くのが普通なのだそうだ。実際書いてきたしな。
この自動変数はautoであるゆえ記憶領域はメモリのスタック上であり、その領域は変数が宣言されている関数の始まりで生成され、そして関数の終わりで消滅する。
つまりプログラムの実行中に最初から存在するのではなく、宣言されている関数が実行されているときだけスタック上に取られるので、変数の為に余分なメモリが食われることがないのだそうだ。

例えば、

func1( )
{
 int x,y;
}

func2( )
{
 int k,l;
}

main( )
{
 int i,j;
 func1( );
 func2( );
}


こんな関数があった場合、まずmain関数の始まりでiとjがメモリのスタック上に取られ、次にfunc1( )がコールされx,yがさらにその上に取られる。
で、func1が終わるとfunc1で使った領域のx,yは消滅し、次のfunc2( )でまた新たにk,lがiとjの上に領域を取り、そしてやはりfunc2( )の終わりでkとlの領域は消滅する。
更に最後にはmainが終わり、iとjの領域も終わりを迎えるのである。

実にリーズナブル、且つ、省エネでございます。
私の人生もかくありたいと願って止みません。


まとめに入らせて頂きます。

メモリはいつだって諸行無常
生者必滅の響き有り


侮るなかれ。プログラムすら宇宙の真理に繋がっているのだ。

全然関係ないが、昔の友人ちの家の壁って毎年夏になると数百匹単位のカメムシが飛来して群れを成してたんだりしたんだが、あの家は今はどうなっているのだろう。 
今年もまた、沢山のカメムシ達が集う憩いの地となっているのだろうか?

どういう基準で集まっているんだろうな奴らは。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。