トップページ

本棚


両手で1000まで数えられますか?:2進法の話
数値 - 危険物取り扱い注意
100 × 200 =32?:変数のオーバーフローの話
パリティビット
小数の扱いについて
ぽいんた
ぽいんた2
ぽいんた3
ジ・オリジン
ジ・オリジン:補足
かっこつける話
かっこつける話2
文字列のこと
タイミングの話
拡張性の話
取り込む話
staticな話

コンパイルの話1
コンパイルの話2:止まらぬビルド
コンパイルの話3:マシン語に落ちるということ1:メモリの話
コンパイルの話4:マシン語に落ちるということ2:最適化
コンパイルの話5:マシン語に落ちるということ3:変数とスタック
コンパイルの話6:コンパイラはそもそも何をやってくれるのか??
リンクの話
プリプロセッサの話

OS、というもの

オブジェクト指向1
オブジェクト指向:2
オブジェクト指向:3

オブジェクト指向:番外 C言語のソースファイルの話
オブジェクト指向:番外 C言語での「再利用性」と「カプセル化」データ構造とアルゴリズム


抽象的な話

寝込んで布団の中で考えたこと
こんなの、常識??
お仕事プログラミング
ソフトでハードなプログラム
プログラムするということ
お勉強
プログラムを学ぶということの補足
C言語:「学問」と「実務」
統合開発環境
C言語ってポータブルですか?
C言語ってポータブルですか?:2
あなたは、どう読みますか?
ああ勘違い
試してガッテン
低級品
質問をするということ
ポカ
「何もしない」 != 「無駄」
エディタの話
もっと手を抜こう

いまどきの、アセンブラ

VisualStudio2005
VisualStudio2005:2

戦争の防ぎ方、に対する私の考え
身近な差別
改革
地球に優しいなんて大嘘
統計で嘘をつく方法

言葉について
言葉について:2

神が死んだということ
善悪の彼岸から、力への意思を目覚めさせるということ

本を読むということ
本を読むということ:2

絵を描く話
地図
地球儀

オカルトのお話
がんだむさん
RPGソフトウェア
記紀神話の不思議



メニュー
こんなの、常識??
割とキャリアもあったりする人でも意外なことを知らなかったりすることがある。

C言語におけるオート変数(ローカル変数)は、ほとんどの処理系においてはスタック領域に確保される(というより、スタック領域の一部の領域をその変数として使う)。
それを知らなくても、まあローカル変数が関数を抜けたところで使えなくなるのは常識だと思う。

何が言いたいかというと、未完了復帰のAPIに、結果格納先としてオート変数のポインタを渡すということをする人が結構いるのだ。また、オート変数で馬鹿でかいワーク領域をとったりする人も。

オート変数の領域はは関数を抜けて、別の関数にエントリした時点で次の関数の別のオート変数に割り当てられる。したがって、意図しないタイミングで別のタスクによって変数の中身が書き換えられるということがおこる。
また、(Windoesアプリなんかだったら問題ないかもしれないが)オート変数で馬鹿でかい領域を確保しようとしたらすぐにスタックオーバーフローで例外が発生することになる。

このあたりは、ちょっとでもアセンブラやるなりC言語のメモリの使い方を知っているならば常識だと思うのだけれど。
C言語の文法の知識を持っていても、高級言語(C言語も一応高級言語だが、この場合はVBとか)の感覚で扱っているからなのか?腑に落ちない。。

無駄なコードを書く人も多い。あんまりカリカリにチューニングしすぎても可読性を損なうけど、明らかに無駄なことはやめて欲しい。
例えばループ内で重い計算させたり。そこでしかできないならしかたないけど、そうでないならループの外に出さないと下手したら何十回何百回とそのパスを通ることになる。

プログラマの皆さん、こんなのは常識ですよね??





| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー | リンク元 | トラックバック