- ベストアンサー
VC++のCRTの実装を覗き見たい
Visual C++ 2008 を使っているのですが、ライブラリ関数の実装はどのファイルでされていますか?それとも隠されていて見ることはできないでしょうか。回答よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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では改変を許していません。 このあたりが,無料と有料の境目だと思います。
その他の回答 (3)
- machongola
- ベストアンサー率60% (434/720)
こんにちは。 実行しながら中に飛び込んで見る事も出来ます。 思いっきり簡単に書くと、例えば内部的にmalloc()/free()はHeapAlloc()APIを呼び出していますし(破壊検出用のガード領域等も割り当てられ、双方向リンクリストで繋いでいる)、fopen()/fclose()/fread()/fwrite()等はCreateFile()API等を呼び出しているに過ぎません。 スレッドセーフにする為に、クリティカルセクション等も使用されています。
お礼
デバッグのことでしょうか? malloc等はアセンブリコードでも入れているのかと思っていましたが、APIを呼び出していたんですね。 回答ありがとうございました!
- Wr5
- ベストアンサー率53% (2173/4061)
ExpressEditionは不明ですが… インストール時にCRTのソースとかインストールできたかと。 2005 StandardEditionですが、 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src にcrtのソース入っています。 中覗いたことはほとんどありませんが。 # ソースモインストール済みならば…デバッグ版でステップ実行で追える…のか? # SP当てた場合にCRTのソースまで更新されるかは不明。
お礼
ExpressEditionを使っているのですが、どうやらExpressEditionでは見れないようですね。 回答ありがとうございました!
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
静的リンクライブラリも、動的リンクライブラリも、どちらも「コンパイル済みのバイナリオブジェクト」になっている為、実装を覗き見る事は出来ません。 実行ファイルを生成し、デバッガで「CPU命令コードレベルでトレースする」くらいが関の山です。
お礼
やはりコンパイル済みですか。 逆コンパイルして見てみることにします。 回答ありがとうございました!
お礼
VC2010がでるようなので有料版の購入を検討してみようと思います。 回答ありがとうございました!