因此,在C ++中,我读到C realloc(&dest, &source, nbytes)
不好,因为它不适用于new和delete。
那么如何在C ++中正确地重新分配数据?假设我有:
int* a = new int[100];
但是我希望将其调整为int [200]。我想到的最简单的方法是:
int* old = a;
int* newPos = new int[200];
memcpy(newPos, a, sizeof(int)*100);
a = newPos;
delete[] old;
有更简单的方法吗?谢谢
您应该使用std::copy
,而不是memcpy:
std::copy(old, old+100, newPos);
[但是通常,应避免直接使用new
和delete
,而应使用标准容器(在您的情况下可能是std::vector<int>
),当您调用它们的resize
方法时,这些容器会为您处理所有这些问题。] >