使用new时如何重新分配dyyanmic数组,不使用realloc删除C++?

How to reallocate dyanmic array when using new and delete C++ without using realloc?

本文关键字:realloc 删除 C++ 数组 new 何重新 dyyanmic 分配 使用      更新时间:2023-10-16

所以在C++中,我读到Crealloc(&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);

但一般来说,您应该避免直接使用newdelete,而是使用标准容器(在您的情况下可能std::vector<int>(,当您调用他们的resize方法时,它们会为您处理所有这些问题。