gpt4 book ai didi

c++ - 获取 std::array 的底层数组的内存大小的最简单方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:36 25 4
gpt4 key购买 nike

这是获取 std::array::data() 返回内容的内存大小的最简单/最短方法吗?

arr.size() * sizeof(arr.value_type)

编辑:我的问题不准确。 “内存中的大小”是指数组中包含的所有元素(本身)的大小,例如它们是指向结构的指针,我只想要指针的大小,而不是指向的结构。我也不想包括 std::arr 实现的任何可能开销的大小。只是数组元素。

有些人建议使用 sizeof(arr)。这个:What is the sizeof std::array<char, N>?不同意。虽然它似乎可以在我的机器上工作,但我想知道标准保证是什么。

最佳答案

您可以直接在您的 std::array 实例上使用 sizeof 运算符:

sizeof(arr)

例子:

struct foo
{
int a;
char b;
};

int main()
{
std::array<foo, 10> a;
static_assert(sizeof(foo) == 8);
static_assert(sizeof(a) == 80);
}

live example on wandbox


来自 cppreference :

std::array is a container that encapsulates fixed size arrays.

This container is an aggregate type with the same semantics as a struct holding a C-style array T[N] as its only non-static data member.

关于c++ - 获取 std::array 的底层数组的内存大小的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46448673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com