[英]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.