- ベストアンサー
STL mapでアクセス違反
VC++2005 Express Editionを使用しています。 (Platform SDKを別途インストールしています。) STL mapの変数を宣言すると、その部分でアクセス違反が発生します。 これだけのコードも動きません。 #include <map> using namespace std; int main() { map<int, int> m; m.insert(pair<int, int>(0,10)); return 0; } グローバル宣言するれば、実行直後に止まります。 なにか対策があればよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VC++2005 Express Editionですが、エラー出ません。 Platform SDKといっても、最新のWindows SDK Update for Windows Vistaを使ってるからでしょうか? 名前にWindows VistaとありますがXPで使ってます(使えます)。
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
確かに PlatformSDKでコンパイルするとエラーになりますね PlatformSDKのCRTソースを見ると VC6の頃のソースに似ています ためしに VC6でPlatFormSDKを参照するようにしてコンパイルしてみましたがこちらはうまく動作するようです MSDNフォーラムのVC20005EEなどで質問してみたほうが良いかもしれませんね http://forums.microsoft.com/MSDN-JA/ShowForum.aspx?ForumID=188&SiteID=7
- redfox63
- ベストアンサー率71% (1325/1856)
当方の環境ですと 実行時にエラーは発生しません … WinXP SP2 + VC2005EE ただし VS2005(製品版)もインストールされているので全く同じ環境とはいえませんけど
補足
私はVS2005(製品版)をインストールしていないので、PlatformSDKの中身が違うかも知れません…。
- koko_u_
- ベストアンサー率18% (459/2509)
>その部分でアクセス違反が発生します。 実行時にエラーになるということですか?
補足
はい、変数mが生成される瞬間に実行エラーが発生します。 insertには到達しません。
お礼
Windows SDK Update for Windows Vistaに差し替えましたが正常に動きました。 for Windows Vistaの存在を知らなかったのでとても助かりました。 ありがとうございます。
補足
Windows® Server 2003 SP1 Platform SDK Web Install Windows® Server 2003 R2 Platform SDK ISO の2種類を試しました。 ちなみに使用OSはWindowsXp sp2です。