これが私のコードです:
template<class T> class Test
{
public:
int Size = 0;
int Length = 0;
T* Items;
Test() {}
~Test()
{
delete [] Items;
}
void Append(const T& newItem)
{
if (Size + 1 >= Length)
{
Length += 250;
T* old = Items;
Items = new T[Length + 250];
for (int i = 0; i < Size; i++)
Items[i] = old[i];
delete [] old;
}
Items[Size] = newItem;
Size++;
}
};
Test<int> test;
for (int i = 0; i < 500000; i++)
test.Append(i);
動的配列に 500000 個の整数を入力していますが、これには 1 ~ 2Mb しか必要ありませんが、約 30Mb かかります。初期サイズを 500000 に設定しても問題ありません (つまり、サイズ変更は発生しません)。成長値 (250) は何らかの形でメモリに影響を与えるようです。それが大きい場合 (たとえば 1000)、メモリ使用量はかなり低くなります。どうしたの?