繁体   English   中英

动态查找结构的大小

[英]Finding the size of the structure dynamically

有没有办法在C中动态查找结构大小?

Sizeof是编译时间运算符..那么另一个选择是什么。

如果我们可以在结构中动态分配数组(柔性数组),那么动态查找结构的大小也应该存在。.请帮助我...

当您在C中动态分配数组时,如果您想知道数组的大小,还必须记住它的大小!

结构大小必须在编译时知道。

如果它包含指向动态分配的内存的指针,则该内存不属于该结构的一部分-它位于结构外部,并且指针指向该结构-因此它不会影响该结构的sizeof

如果您在谈论灵活数组成员,那么您将需要实现自己的方式来了解分配的内存量,例如,拥有一个持有大小的struct成员变量。

sizeof的结果是编译时常数,因为变量或结构的大小在运行时不会改变。

唯一的例外是V(ariable)L(ength)Array,为其定义代码的代码“知道”大小。

引用:

我们可以在结构中动态分配数组

因此,我们假设:

struct s
{
  size_t size;
  int * ints;
}

大小为sizeof(struct s) 那是

  • 无符号整数的大小: sizeof(size_t)
  • 指向int的指针的大小: sizeof (int *)
  • 一些可选的填充字节

这与结构的成员int * ints可以指向多少字节无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM