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

问题描述 投票:0回答:1

因此,在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;

有更简单的方法吗?谢谢

c++ pointers new-operator memcpy realloc
1个回答
1
投票

您应该使用std::copy,而不是memcpy:

std::copy(old, old+100, newPos);

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.