C++BuilderではDynamicArrayがメモリーリークを引き起こす

C++BuilderではDynamicArrayがメモリーリークを引き起こすという話。

元ネタは「DynamicArray causing memory leak in C++ Builder」。

C++Builder 2010で確認したが、確かにデストラクタが呼ばれない。

struct TCircularRef
{
  DynamicArray<TCircularRef> refs;
  TCircularRef() { cout << "TCircularRef" << endl; }
  ~TCircularRef() { cout << "~TCircularRef" << endl; }
};

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
  {
    DynamicArray<TCircularRef> base;
    base.set_length(1);

    base[0].refs = base;
    base.set_length(0);
  } //デストラクタが呼ばれない
  return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください