为什么sizeof
操作员返回的结构尺寸大于结构成员的总尺寸?
初始化成员变量而不引用或使用它会在运行时进一步占用RAM,还是编译器只是忽略该变量?
struct Foo {
int var1;
int var2;
Foo() { var1 = 5; std::cout << var1; }
};
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,成员'var1'得到一个值,该值然后显示在控制台中。但是,根本不使用“ Var2”。因此,在运行时将其写入内存将浪费资源。编译器会考虑这种情况,而只是忽略未使用的变量,还是Foo对象总是相同大小,而不管是否使用其成员?
我的问题如下:
如果我想复制类类型,memcpy可以非常快速地完成.在某些情况下允许这样做.
我们有一些类型特征:
我想知道的是当类型是"可按位复制"时的确切要求.
我的结论是,如果两个is_trivally_copyable
和is_standard_layout
特征都为真,则类型是按位可复制的:
PS:当然,memcpy的结果必须正确.我知道我可以在任何情况下记忆,但不正确.
看看这段代码:
struct A {
short s;
int i;
};
struct B {
short s;
int i;
};
union U {
A a;
B b;
};
int fn() {
U u;
u.a.i = 1;
return u.b.i;
}
Run Code Online (Sandbox Code Playgroud)
是否保证fn()
退货1
?
注:这是一个后续问题要这个.