使用 realloc 增加大小与创建更大的动态数组

Using realloc to increase size vs creating bigger dynamic array

我问这个问题是为了学习;通常我会使用矢量或链表来解决这个问题。

如果动态数组的大小在整个主代码中不断变化,使用起来更高效或更合乎逻辑:创建一个比前一个大一半大小的新动态数组,并将之前的元素复制到其中,或者使用 realloc 使动态数组更大?如果其中之一更有效或更合乎逻辑,为什么?

如果有空间,

realloc 可以扩展现有的内存块,完全避免整个分配 + 复制 + 释放过程。使用 new[] 不允许这种可能性。

如果您正在编写惯用的 C++,您应该使用 std::vector,它在底层做同样的事情。但是为了学习,如果你没有 std::vector 然后使用 realloc.

请注意 realloc 不是对象感知的。它不会调用构造函数和析构函数。如果你打算在 C++ 中使用它,你最好清楚地知道你在做什么!