【发布时间】:2019-12-14 06:48:30
【问题描述】:
所以在 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++ containers,可能是
std::vector,在你的情况下是std::vector<int> -
是的,我知道在这种情况下容器是正确的。但具体来说,无论如何要在 C++ 中重新分配?
-
这能回答你的问题吗? Reallocating memory of a C++ array.
-
而编译器通常知道标准容器。顺便说一句,即使在 C 中,
realloc也经常被错误地使用(例如,对于失败的情况)。所以请使用容器,或者放弃C++
标签: c++ pointers new-operator memcpy realloc