もしかしたら周知の事実なのかも知れませんが、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のコンパイラが思いつくのですが、こっちは少なくとも最新版では上記の通りに治ってました。