W.Deeの2004年11月の日記

kikyou.info»日記
最新月 : 2008年10月
2003年 [             3    4    5    6    7    8    9   10   11   12  ] 月
2004年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2005年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2006年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2007年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2008年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2009年 [   1    2    3    4    5    6    7    8    9   10   11       ] 月
前月の日記  次月の日記

2004年11月2日

Rogue Wave STL のバグ

もしかしたら周知の事実なのかも知れませんが、BCB5/6 付属 (たぶんもっと昔のバージョンとか Borland のフリーの C++ コンパイラでも同じだと思います) の Rogue Wave STL にバグがありました。

TJS2 の Array.sort (STL では std::stable_sort) で安定ソートを行おうとするとメモリリークが発生するので、どこだろうな、と思って探していたら、memory.stl の template <class ForwardIterator> void __destroy (ForwardIterator first, ForwardIterator last)

while (first != last)
    ++first;

というのがありました。

…本来は first から last までにあるオブジェクトのデストラクタを呼ぶための関数のようですが、実質、中身が空ループなので、あからさまに変ですね。

なんでこういう実装になっているのか理解に苦しみますが、正しくは

for ( ; first != last; ++first)
    __destroy(&*first);

のようです。

BCB6だとRogue WaveではなくてSTL portがデフォルトになっていますね。他でRogue Waveを使っているというとSUNのコンパイラが思いつくのですが、こっちは少なくとも最新版では上記の通りに治ってました。

  • 2004-11-29 23:54 torisugi : 日経ソフトウェア2005年1月号に吉里吉里/KAGの紹介がちらっと載ってました。ページ数は覚えていませんが、「ツヨシしっかりしなさい」のツヨシみたいなキャラが下に描かれていたのが強く記憶に残ってます。ツヨシだけに。
  • 2004-12-06 16:43 W.Dee : いま見てきました。確かにこれはツヨシだ。間違いない。あとこのサイトにはこことは別に掲示板が必要だと思う今日この頃です。ここは掲示板ではないのです。