是在结构连续中并排声明的变量
Are variables declared side by side in a struct contiguous?
我肯定知道数组元素是连续存储的,但是如果我声明这样的内容是什么:
class A {
public:
int a, b, c;
// or
int a;
int b;
int c;
}
成员是否连续存储?我一直在想,是否有可能从另一个过程中存储一个变量在a
和b
之间的声明之间,以免它不连续。但是我不确定。有保证吗?
a
b
和 c
保证在结构中处于该顺序。
但是,通常,任何两个结构成员之间都可能存在结构填充。通常,对于仅包含int
成员的结构,不会有填充,但最好不要做出假设。
您可以在编译时检查此内容:
static_assert( sizeof(A) == 3 * sizeof(int), "oops, A had padding" );
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]