簡體   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