2020年6月3日水曜日

Visual C++2019での挙動差異

Algorithm4のインスタンスの一部が動きませんでした。
調べたところ、
次の箇所、std::mapの挙動が違いました。
mapがemptyであるとき、0が入ると思っていたのですが、デバッグモードでは、0、最適化(Release Mode)を行うと、1が入ってしまいました。

  map[xx]=map.size();
  
言語仕様上、正しい動作は分からないのですが、とりあえず、明示的に次のような対処を行いました。

 int size=map.size();
  map[xx]=size;
  
Runtime自体は、変わっていないようですので、恐らくコンパイラの差異なんでしょう。いつものことですが、コンパイラを変えると何かしら、こうした問題が発生します。

0 件のコメント:

コメントを投稿