• ベストアンサー

VC++のCRTの実装を覗き見たい

Visual C++ 2008 を使っているのですが、ライブラリ関数の実装はどのファイルでされていますか?それとも隠されていて見ることはできないでしょうか。回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

CRTは http://msdn.microsoft.com/ja-jp/library/abx4dbyh(VS.90).aspx にあるライブラリに含まれます。 そして,そのソースコードは,Visual Studio 2008 Standard Edition以上であれば, %VCINSTALLDIR%\crt\src にインストールされます (インストールしていれば)。 Express EditionではCRTのソースコードは付属していません。 手元のTeam SuiteのEulaではCRT/MFC/ATLの改変を許していますが,Express Editionでは改変を許していません。 このあたりが,無料と有料の境目だと思います。

noname#113783
質問者

お礼

VC2010がでるようなので有料版の購入を検討してみようと思います。 回答ありがとうございました!

その他の回答 (3)

回答No.4

 こんにちは。  実行しながら中に飛び込んで見る事も出来ます。  思いっきり簡単に書くと、例えば内部的にmalloc()/free()はHeapAlloc()APIを呼び出していますし(破壊検出用のガード領域等も割り当てられ、双方向リンクリストで繋いでいる)、fopen()/fclose()/fread()/fwrite()等はCreateFile()API等を呼び出しているに過ぎません。  スレッドセーフにする為に、クリティカルセクション等も使用されています。

noname#113783
質問者

お礼

デバッグのことでしょうか? malloc等はアセンブリコードでも入れているのかと思っていましたが、APIを呼び出していたんですね。 回答ありがとうございました!

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

ExpressEditionは不明ですが… インストール時にCRTのソースとかインストールできたかと。 2005 StandardEditionですが、 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src にcrtのソース入っています。 中覗いたことはほとんどありませんが。 # ソースモインストール済みならば…デバッグ版でステップ実行で追える…のか? # SP当てた場合にCRTのソースまで更新されるかは不明。

noname#113783
質問者

お礼

ExpressEditionを使っているのですが、どうやらExpressEditionでは見れないようですね。 回答ありがとうございました!

回答No.1

静的リンクライブラリも、動的リンクライブラリも、どちらも「コンパイル済みのバイナリオブジェクト」になっている為、実装を覗き見る事は出来ません。 実行ファイルを生成し、デバッガで「CPU命令コードレベルでトレースする」くらいが関の山です。

noname#113783
質問者

お礼

やはりコンパイル済みですか。 逆コンパイルして見てみることにします。 回答ありがとうございました!

関連するQ&A