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

标签 c++ arrays dynamic-memory-allocation

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

如果动态数组的大小在整个主代码中发生变化,使用这种方法更有效或更合乎逻辑:创建一个比前一个大一半大小的新动态数组并将以前的元素复制到其中,或使用 realloc 使动态数组更大?如果其中之一更有效或更合乎逻辑,为什么?

最佳答案

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

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

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

关于c++ - 使用 realloc 增加大小与创建更大的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61146284/

相关文章:

C++ typeof 运算符

c++ - Linux 上的 QTouchEvent 代替 QMouseEvent

更改字符数组的输出

php - 我怎样才能操纵我的阵列,所以如果在 60 分钟内用相同的方式进行扫描

c - 在理解 C 中的内存分配时遇到了一些麻烦

c++ - 动态分配时指向免费商店的新地址是一种好习惯吗?

c++ - new 运算符返回什么?

c++ - ConsoleApplication4.exe 已停止工作。 Windows 将关闭程序并通知是否有可用的解决方案

arrays - 检查数组是否包含字符串

c++ - 在 Theta(n) 的范围内确定友好配对