【发布时间】:2017-09-27 13:04:31
【问题描述】:
这是在内存中获取std::array::data() 返回的内容大小的最简单/最短的方法吗?
arr.size() * sizeof(arr.value_type)
编辑:我的问题并不准确。 “内存中的大小”是指数组中包含的所有元素(它们本身)的大小,例如,如果它们是指向结构的指针,我只想要指针的大小,而不是指向的结构。我也不想包括std::arr 实现的任何可能开销的大小。只是数组元素。
有人建议sizeof(arr)。这:What is the sizeof std::array<char, N>? 不同意。虽然它似乎在我的机器上工作我想知道标准保证什么。
【问题讨论】:
-
这应该是一个自我回答的问题吗?
-
为什么不只是
sizeof arr? -
试试
sizeof(arr) -
您要包含还是排除填充?
-
@nwp,没有 C 数组不能有填充(即 T[N] 的大小始终为 sizeof(T)*N ),标准明确表示。当然 T 本身可以有填充,一个持有 T[N] 的结构也可以...