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