【问题标题】:Dynamic vs static array动态与静态数组
【发布时间】:2020-05-02 13:04:22
【问题描述】:

动态内存分配:int* ptr = new int[3] 是否需要比静态分配:int ptr[3] 更多的 RAM,因为要存储指针多 4 个字节?

【问题讨论】:

  • 不,这不是真的。出于完全不同的原因,它需要更多 RAM。
  • 是的,但比这更糟糕,因为在您分配内存的堆数据结构中存在额外的开销。谁知道,按照这个速度,你可能很快就会耗尽内存。基本上,静态分配和动态分配之间的重要区别在于它们的行为不同。为您需要的行为选择正确的行为,而不是内存消耗的微小差异。

标签: c++ pointers memory dynamic


【解决方案1】:

基本上在性能上存在差异,动态分配使用堆(以便在程序调用新运算符时要求操作系统分配该内存)函数内部的静态分配(在某些情况下)使用堆栈(预定义的内存)在运行时分配得更快。

【讨论】:

    【解决方案2】:

    这在很大程度上取决于您所处的情况。

    动态分配使用堆,因此当您使用new 时,它必须向操作系统请求它。 静态分配使用堆栈,因此内存“请求”比程序启动后立即分配的动态分配更快。

    如果您需要一个小数组并且在简单的操作中使用它,出于练习目的,静态分配就足够了。

    C/C++ performance of static arrays vs dynamic arrays

    【讨论】:

      猜你喜欢
      • 2018-07-29
      • 2014-07-21
      • 2011-02-09
      • 2020-09-19
      • 1970-01-01
      • 2013-07-20
      • 2020-07-31
      • 2019-06-02
      • 2021-04-01
      相关资源
      最近更新 更多