【问题标题】:Does using typedef for an array take more memory than the array itself when allocated?分配时对数组使用 typedef 是否比数组本身占用更多内存?
【发布时间】:2020-08-02 14:31:48
【问题描述】:

简单地说,如果我这样做:

typedef char arrayOne[10];

主要是:

char arrayTwo[10];

malloc(sizeof(arrayOne)) 会比malloc(sizeof(arrayTwo)) 占用更多内存吗?

或者换句话说;我使用 typedef 来保持代码更简单,但值得还是我应该忘记它,因为它使用了不必要的额外内存?

【问题讨论】:

  • 不,同样大小...
  • @chux-ReinstateMonica 我担心可能会有一些额外的位来存储信息或编译器的东西
  • typedef 根本不分配任何内存(或引入开销);它只是为编译器提供一些信息以供您在实际定义一些变量时使用。
  • typedef 只是添加一个类型的别名,它在编译器内部处理,在完成的可执行代码中不会看到类型别名的痕迹。
  • a typedef 是另一种类型的别名(从广义上讲)

标签: arrays c typedef


【解决方案1】:

内存分配和typedef 之间没有关系。关键字typedef 只是创建别名以使长名称数据类型更短且更易于阅读。

【讨论】:

  • 这非常乐观。我见过很多 typedef,它们使代码更加模糊和难以阅读。
猜你喜欢
  • 2012-05-23
  • 2014-10-04
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多