【问题标题】:Dynamic Array Implementation in CC中的动态数组实现
【发布时间】:2014-02-24 16:39:30
【问题描述】:
  • C 中的 realloc 函数是否分配连续的内存空间?

  • 我正在尝试实现动态整数数组。我应该按数组元素的大小还是按 1 递增指针?

  • 有没有其他更好的方式在 C 中实现动态数组?

【问题讨论】:

  • 你的意思是“与原始记忆连续”吗?

标签: c arrays pointers dynamic realloc


【解决方案1】:
  1. 是的,就像malloc() 一样。

  2. 如果您有一个int* ptr,它是一个指向动态分配的int 数组元素的指针,那么一个简单的ptr++ 将指向下一个元素。

  3. 在我看来,在 C 语言中使用 malloc()realloc() 是动态数组的不错选择。

【讨论】:

  • 我上面的评论也适用于这里。
【解决方案2】:

C 中的 realloc 函数是否分配连续的内存空间?

是的。

我正在尝试实现动态整数数组。我应该按数组元素的大小还是按 1 递增指针?

您应该将指针增加1

还有其他更好的方法可以在 C 中实现动态数组吗?

使用malloc 系列函数是唯一的方法。但在 C99 及更高版本中,您可以使用variable length arrays(但它有一些限制,因为它在堆栈上分配内存)。

【讨论】:

  • 感谢您的快速回复!我现在需要更改我的代码!
  • @user3224177;有什么变化?
  • 按指针大小增加大小没有意义,它应该使内存加倍,或者更好的是,增加 150%。它给出了追加的摊销常数时间!而且,是的,C 语言中最好的方法是使用 realloc。
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多