【问题标题】:Why using static arrays rather than dynamics arrays?为什么使用静态数组而不是动态数组?
【发布时间】:2014-03-06 01:04:52
【问题描述】:

我知道,在 C++ 中,有两种数组:静态数组和动态数组。但我有一个问题:

为什么在某些情况下我们会使用静态数组而不是动态数组,而在我看来,动态数组比静态数组可以做更多的事情?

为什么我们要在所有情况下都使用动态数组?

【问题讨论】:

  • 一个原因是它们需要动态内存分配,这可能被认为成本太高。此外,它们必须手动取消分配,这很容易搞砸。后一个问题可以通过使用例如来避免。 std::vector.
  • 动态数组通常会带来更多开销(至少是额外的间接级别)。
  • @juanchopanza '这可能被认为过于昂贵' 或者根本不适用于该平台(这是我的日常面包和黄油之一)......跨度>
  • @πάνταῥεῖ 我想那时使用另一个平台成本太高了:-)

标签: c++


【解决方案1】:

为什么在某些情况下我们会使用静态数组而不是动态数组,而在我看来,动态数组比静态数组可以做更多的事情?

假设 静态数组 是指 C 样式数组或 std::array,而 动态数组 是指 std::vector,因为:

  1. 编译器可以优化静态数组,因为其大小在编译时是已知的。
  2. 动态数组利用动态内存分配,这可能很昂贵。

【讨论】:

    【解决方案2】:

    仅供参考,在嵌入式系统中,内存受到限制(体积小)。

    静态数组允许约束任何序列而不会遇到碎片问题。

    此外,可以将一个常量静态数组放入只读内存中,从而释放读/写内存。

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 2019-06-28
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2012-11-15
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多