这是我的代码:
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)那么内存使用率非常低。怎么了?