我一直認爲由sizeof
返回的T
類型的N個元素的數組的大小保證是N次sizeof(T)
的N倍。是否保證sizeof(T [N])== N * sizeof(T)?
comments on this question讓我懷疑它。有信譽良好的用戶聲稱數組可能包含填充,這將打破平等。當然,這樣的平臺可能不存在,但它們允許嗎?
如果允許,這會打破很多常見的習慣用法,例如使用N * sizeof(T)
計算數組所需的存儲空間,或者使用sizeof(a)/sizeof(a[0])
來計算數組中元素的數量。
鑑於'sizeof'總是處理靜態類型而不是運行時值,所以我不認爲實際內存的表現如何。是否sizeof(T [N])== N * sizeof(T)'是類型系統和預處理器的關注點。 –
@AsadSaeeduddin - 正確的,我不認爲我暗示否則?或者也許這是對現在刪除的評論的回覆。 – BeeOnRope
我在評論你所鏈接的話題的討論。很有可能存在這樣的情況:數組佔用的空間大於它們元素大小的總和,但這與'sizeof(T [N])'是'N * sizeof(T)'這一事實沒有關係。 '。 –