« さよなら、たー君 | Main | ヒープとスタック(構造体とクラス) »

19 January 2005

型のサイズ

C++ .NETアプリケーションで、ちょっとトリッキーな(禁じ手?)をやってまして、例えばプラットフォームSDKで定義されているDWORDを使用せず、独自にtypedef unsigned long DWORD;といったエイリアス的な型定義をしているところがあったんです。(このC++ .NETで作られたDLLとC#のアプリケーションが連動するので、.NET寄りな意識が働いているようでした。またwindows.hはインクルードしたくなかったみたい。)で、こいつが起因して、メモリの内容がうまく取得できたり、出来なかったり。
そりゃそうだ、と。DWORDは32-bit unsigned integerで、windows.hでtypedef unsigned long DWORD;と定義されているわけです。で、片や.NETにおけるlongは64-bit signed integerです。
つまりは、こういうことかと。32-bit unsigned integer(windows.hにおけるDWORDの定義)でなければならないのに、64-bit unsigned integer(独自のDWORDの定義)になっているために、メモリをぶっこわしていたんだな、と。
いや~Pen4 1.6GHzでアプリケーションを実行するとメモリの内容は正しく取得できるのに、Pen4 3GHzだと正しく取得できないという、ちょっとレアな状態に見えたので、ホント悩みました。CPU依存・・・、あぁintって処理系依存だったなぁ・・・。なるほど。って対策した後に気づきました。一安心です。

TrackBack

TrackBack URL for this entry:
http://bb.lekumo.jp/t/trackback/517129/31023897

Listed below are links to weblogs that reference 型のサイズ:

Comments

Post a comment

Access Ranking

Powered by Six Apart
Sponsored links