なーんか動作がおかしいぞ?と思ったら、まずはthisを見よ。void*にキャストしたり、uintptr_tを使ったりといった場合は穴が開くほど見よ。
デバッグビルドなら0xcdcdcdcd、0x00000000、0xfeeefeeeを指してないか確認せよ。この値を見るだけで、もう原因はほぼわかる。 → ココ
これ以外の値がならば、別のインスタンスを指していないか確認せよ。別のインスタンスどころかでたらめかどうかは、普段からデバッガを使っているわれわれにとっては、異常な値かどうかなど一目でわかるはず。
thisが異常な値を指していても、メンバ変数にアクセスしなければ動いてしまう可能性もあるし、また、アクセスしても動いてしまう可能性もゼロではない。とにかく動作がおかしくなる。
この基本を忘れて、1日つぶしてしまったので書いておく。
2008年1月17日木曜日
SunがMySQL買ったって
な!
うーむ。もう、標準ライブラリでDBサポートしてるのが当然の時代が到来か。C#でそういうことやる、って言ったときは「先進的!だけど今までどうしてそうじゃなかったのか。」とか思ったものですけど。思えばデータベースなんて資源をまるでファイルを扱うように普通に使う時代がとっくに来ていたのか。
うーむ。もう、標準ライブラリでDBサポートしてるのが当然の時代が到来か。C#でそういうことやる、って言ったときは「先進的!だけど今までどうしてそうじゃなかったのか。」とか思ったものですけど。思えばデータベースなんて資源をまるでファイルを扱うように普通に使う時代がとっくに来ていたのか。
2007年12月21日金曜日
2007年10月11日木曜日
変数の追加ウィザードが白い対策
リソースエディタで右クリック→変数の追加、で、真っ白、白い、ウィンドウが出るのに中身が無い!って状態になってしまった子は、IEを起動してエンコードの設定を自動にしてやるとなおります。逆に言えばIEでエンコード設定を手動でいじってしまうと、こういう状態になります。
2007年10月5日金曜日
.net frameworkソース公開
まじかよー。まぁMFCのソースコードが提供されていたことを考えると、いままでそうじゃなかったことが「?」かもしれない。
しかしこれでまた、開発者同士がコンポーネントで提供するのではなく、ソースコード読め!とかいわれる文化が根付くと嫌だな。
例えばよくある「アセンブラレベルでの理解ができないとプログラミング、マルチスレッドはできない」的発言は、単なるそういったプリミティブな部分を全員知らないとプログラミングできない環境から進化できてない証拠の発言であり、先人や我々がいかに怠慢か、作業分担できてないか、無駄なな作業とデバグを延々繰り返しているかという証拠であると思うのだが。
まぁ最近はそうでもないか?結局開発は上から下までC++使わされてて、そういった恩恵を受けられない私が世の中についていけていってないだけか。
しかしこれでまた、開発者同士がコンポーネントで提供するのではなく、ソースコード読め!とかいわれる文化が根付くと嫌だな。
例えばよくある「アセンブラレベルでの理解ができないとプログラミング、マルチスレッドはできない」的発言は、単なるそういったプリミティブな部分を全員知らないとプログラミングできない環境から進化できてない証拠の発言であり、先人や我々がいかに怠慢か、作業分担できてないか、無駄なな作業とデバグを延々繰り返しているかという証拠であると思うのだが。
まぁ最近はそうでもないか?結局開発は上から下までC++使わされてて、そういった恩恵を受けられない私が世の中についていけていってないだけか。
登録:
投稿 (Atom)