ADHDエンジニアのL2キャッシュスマートフォン用の表示で見るADHDエンジニアのL2キャッシュADHDの能力を駆使して自由な発想を落としていくよこの広告は、90日以上更新していないブログに表示しています。プログラミングコード書いてる時にちらほら見かけるstaticこいつらっていったいなんだっけ?staticメモリプログラムが扱うメモリは大きく分けてstatic/stack/heapの3領域あります。動的に確保できる領域。スコープが決まっており、そこを抜けると強制的に解放される。動的に確保できる領域。任意のサイズ、任意の順で確保開放できる。ここでいうstaticと言うのは「プログラム全体を通してstaticに確保されるメモリ」という意味です。プログラムした時点でサイズが決定し、プログラム起動時にまとめて確保されてしまいます。C言語では以下の2つが該当します。大概はheapで確保したメモリへのポインタをglobal変数に格納するという合わせ技で使われます。ちなみにstack変数のポインタを格納しても勝手に開放されるので意味ないです。コンパイル単位制限C/C++でしかお目にかからない構文です。static変数)関数宣言の頭につける(static関数)数あるstaticの中で一番意味不明な振る舞いをします。最近はスクリプト言語が多いので忘れがちですが、プログラムは以下のステップで作成されます。(末尾はC言語の場合の拡張子)ソースコードにテキスト処理を施す(プリプロセッサ)ソースコードからオブジェクトファイルを作る(コンパイル)オブジェクトファイル同士を静的に結合してライブラリにする(静的リンク)global変数や関数はスコープが無いため、同名があればコンパイル時、静的リンク時にエラーになってしまいます。static宣言をすることで、その名前はコンパイル時にしか使用しませんよ、という制約を加えることができます。(つまり静的リンク時に衝突しない)インスタンスに対してstatic多分一番お目にかかるstaticです。クラスのメンバに付与することで効果を発揮します。staticフィールド本来クラスはインスタンスの雛形で、フィールドはインスタンスごとに固有のメモリ領域を持ちます。このstatic指定を追加すると、フィールドはインスタンスではなくクラスで管理され、全インスタンスで共有されます。オブジェクト指向とは何だったのか。staticメソッドstaticフィールドのみにアクセスし、通常のフィールドにアクセスできないメソッドです。引数だけで結果が確定する関数などでも使用されます。staticクラスstaticなメンバしか保たないクラスの宣言に使います。基本普通のクラスなんですが「どうせ全部staticなのだからnew禁止しといてあげるね♪」というおせっかいがつきます。まとめややこしくて仕方がない。違う概念に同じ名前をつけるの辞めてほしいですね。»プロフィールid:ksilverwallADHDの能力者。思いついたことが消え去ってしまわないようにキャッシュアウトする場所です。INBOX的な役割を兼ねているので混沌としています。移転しましたADHDを克服した話プログラミングにおける様々なstaticまとめ急いでガチャガチャと組み込んだコードはコケる会議には目的を月別アーカイブはてなブログをはじめよう!ksilverwallさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。