• ベストアンサー

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; } グローバル宣言するれば、実行直後に止まります。 なにか対策があればよろしくお願いします。

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

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.4

VC++2005 Express Editionですが、エラー出ません。 Platform SDKといっても、最新のWindows SDK Update for Windows Vistaを使ってるからでしょうか? 名前にWindows VistaとありますがXPで使ってます(使えます)。

k_ppm
質問者

お礼

Windows SDK Update for Windows Vistaに差し替えましたが正常に動きました。 for Windows Vistaの存在を知らなかったのでとても助かりました。 ありがとうございます。

k_ppm
質問者

補足

Windows® Server 2003 SP1 Platform SDK Web Install Windows® Server 2003 R2 Platform SDK ISO の2種類を試しました。 ちなみに使用OSはWindowsXp sp2です。

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

確かに PlatformSDKでコンパイルするとエラーになりますね PlatformSDKのCRTソースを見ると VC6の頃のソースに似ています ためしに VC6でPlatFormSDKを参照するようにしてコンパイルしてみましたがこちらはうまく動作するようです MSDNフォーラムのVC20005EEなどで質問してみたほうが良いかもしれませんね http://forums.microsoft.com/MSDN-JA/ShowForum.aspx?ForumID=188&SiteID=7

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

当方の環境ですと 実行時にエラーは発生しません … WinXP SP2 + VC2005EE ただし VS2005(製品版)もインストールされているので全く同じ環境とはいえませんけど

k_ppm
質問者

補足

私はVS2005(製品版)をインストールしていないので、PlatformSDKの中身が違うかも知れません…。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>その部分でアクセス違反が発生します。 実行時にエラーになるということですか?

k_ppm
質問者

補足

はい、変数mが生成される瞬間に実行エラーが発生します。 insertには到達しません。

関連するQ&A