gpt4 book ai didi

c++ - 如果我获取它的地址,是否保证静态变量是有序的?

转载 作者:行者123 更新时间:2023-11-30 03:36:20 24 4
gpt4 key购买 nike

我想知道,如果我获取一个完全静态类的地址,是否可以保证其成员以正确的顺序对齐?我想这也适用于在全局范围内定义的一组变量。

struct Buffer1
{
static float val1;
static float val2;
};

void readBuffer(void* buffer){ /*Do something*/}

int main()
{
// Sending the buffer
readBuffer(&Buffer1); // Type name is not allowed
readBuffer(&Buffer1::val1); // Does work, wondering if data will be correct

return 0;
}

还有,有没有办法获取一组静态或全局变量的大小?喜欢:

// Getting the size of the buffer
size_t sizeOfBuffer = sizeof(Buffer1); // Wrong size, doesn't measure static members
sizeOfBuffer = sizeof(Buffer1::val1) + sizeof(Buffer1::val2); // Does work but doesn't account for data padding/alignment, and is also tedious to change

我知道在这种情况下,实例化类会更好,但我对这两个问题很好奇。谢谢。

最佳答案

不,C++ 标准没有指定静态范围内对象在内存中的顺序。

C++ 标准也不保证类成员的相对顺序。

关于c++ - 如果我获取它的地址,是否保证静态变量是有序的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40777127/

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