有没有办法在 C 中动态查找结构大小?
Sizeof 是编译时运算符..那么另一个选项是什么。
如果我们可以在结构中动态分配数组(灵活数组),那么动态查找结构大小也应该在那里..请帮帮我...
有没有办法在 C 中动态查找结构大小?
Sizeof 是编译时运算符..那么另一个选项是什么。
如果我们可以在结构中动态分配数组(灵活数组),那么动态查找结构大小也应该在那里..请帮帮我...
结构大小必须在编译时知道。
如果它包含一个指向动态分配内存的指针,那么该内存不是结构的一部分——它在结构之外并且指针指向它——所以它不会影响sizeof
结构。
如果您正在谈论灵活的数组成员,那么您将需要实现自己的方式来了解您分配了多少内存,例如拥有一个保存大小的结构成员变量。
sizeof
的结果是编译时常量,因为变量或结构的大小在运行时不会改变。
唯一的例外是 V(ariable)L(ength)Arrays,定义它们的代码“知道”其大小。
参考:
我们可以在结构中动态分配数组
所以让我们假设:
struct s
{
size_t size;
int * ints;
}
大小为sizeof(struct s)
. 那是总和
sizeof(size_t)
int
:sizeof (int *)
这与结构成员int * ints
可能指向的字节数无关。
当你在 C 中动态分配一个数组时,如果你想知道数组的大小,你也必须记住它的大小!