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;
}