联合会占用与其成员中最大类型一样多的内存吗?
Do unions occupy as much memory as the largest type of their member?
关于dlang中的union,有一点让我很困惑,union占用多少内存?例如,我有以下联合:
union Tqvar{
double d;
char c;
}
double 类型占用 64 位(如果我没记错的话),char 占用 8 位。由于联合一次只能包含一个值(或 whatever-you-call-it
),如果我将 char 存储在它,在c
中,联合会占用8位还是64位?
是的,与任何语言一样,D 中的联合必须始终具有足够的内存空间来存储其最大成员。所以它将占用 64 位,加上 Union 容器本身的任何开销,如果有的话。
关于dlang中的union,有一点让我很困惑,union占用多少内存?例如,我有以下联合:
union Tqvar{
double d;
char c;
}
double 类型占用 64 位(如果我没记错的话),char 占用 8 位。由于联合一次只能包含一个值(或 whatever-you-call-it
),如果我将 char 存储在它,在c
中,联合会占用8位还是64位?
是的,与任何语言一样,D 中的联合必须始终具有足够的内存空间来存储其最大成员。所以它将占用 64 位,加上 Union 容器本身的任何开销,如果有的话。