是否保证了尺寸(t [n])== n * sizeof(t)
Is it guaranteed that sizeof(T[N]) == N * sizeof(T)?
我一直假设T
类型的N元素数组的大小,保证sizeof
返回的元素恰好是n次sizeof(T)
。
对这个问题的评论使我怀疑。信誉良好的用户的索赔可能包含填充物,这将打破平等。当然,这样的平台可能不存在,但是允许它们吗?
如果允许,这将打破许多常见的习语,例如计算使用N * sizeof(T)
的数组的所需存储,或使用sizeof(a)/sizeof(a[0])
计算数组中的元素数。
是。 [expr.sizeof] 包括有关 sizeof
的此位:
应用于数组时,结果是数组中的字节总数。这意味着 n 元素的数组的大小是 n 乘以元素的大小。
sizeof
的全部要点是相关填充。数组的每个元素都是上一个元素之后的sizeof(T)
字节。因此整个数组的大小为 N * sizeof(T)
。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- sizeof(* struct 指针)是否给你结构的值
- 当 A 和 B "the same"时断言(sizeof(A) == sizeof(B))是否安全?
- "sizeof(some_vector[0])"是否有效
- 是否保证了尺寸(t [n])== n * sizeof(t)
- 我是否可以保证SizeOf(type)== sizeof(无符号类型)
- sizeof 是否在编译时或运行时计算
- sizeof(T) * CHAR_BIT是否保证位大小
- 传递给 A::运算符 new() 的大小是否总是等于 sizeof(A)
- C++是否保证cstilt sizeof的排序
- sizeof(int)是否始终等于sizeof(void*)
- sizeof类是否保证只包含元素的大小
- sizeof操作符是否优先选择对象而不是类型
- gcc对vla的sizeof操作符的计算方式是否不同
- 在c++中创建模板时是否有可能找到sizeof(T) ?
- 标准是否保证std::向量占用的总内存按C+N*sizeof(T)缩放
- 在C++中的非 POD 类型上使用 sizeof 运算符是否安全
- 当delete my_object;执行?是否所有其他内存都被sizeof(MyClass)向左移动
- 不管是否初始化,使用sizeof(p[0])真的无害吗?