面试题答案
一键面试1. union节省内存的原理
在C++中,union
允许不同的数据类型共享同一块内存空间。它只有一个成员会处于活动状态,也就是说在任何时刻,只有一个成员的值是有效的。这样,union
分配的内存大小仅为其最大成员所需的内存大小,而不是所有成员大小之和,从而达到节省内存的目的。
2. union定义
union MyUnion {
int intValue;
float floatValue;
char charArray[5];
};
3. 32位系统下占用内存大小及原因
- 大小:在32位系统下,
int
通常为4字节,float
也是4字节,char[5]
为5字节。由于union
分配内存大小是其最大成员的大小,所以MyUnion
在32位系统下占用5字节。 - 原因:
union
以最大成员所需内存来分配空间,charArray[5]
是这里最大的成员,需要5字节,因此整个union
占用5字节。
4. 64位系统下占用内存大小及原因
- 大小:在64位系统下,
int
通常仍为4字节,float
为4字节,char[5]
为5字节。同样,MyUnion
在64位系统下占用5字节。 - 原因:原理与32位系统相同,
union
按照最大成员charArray[5]
的大小5字节来分配内存空间。