当前位置:首页 > 内存 > 正文

结构体所占内存空间

  • 内存
  • 2024-08-15 17:42:33
  • 8779

一、结构体变量所占内存长度是内存的总长度。根据中关村在线的一个问题,结构体变量占用的内存长度是每个成员占用的内存长度总和。同时,内存长度与成员的顺序有关。
二、当定义一个结构体变量时系统为它分配的内存空间是

A.每个成员所需的内存总量

一旦定义了结构体变量,系统分配的内存就是每个成员所需内存的总和。本题考查的主要知识点是结构体变量占用的内存空间。一旦定义了结构变量,就必须分配内存。分配的字节数等于结构体所有成员占用的字节数之和。因此,在定义结构体变量时,系统分配的内存就变成了各个成员所需内存的总和。

扩展信息:

C++提供了多种可以使用的原始数据类型(例如int、float、double、char等)。。然而,由于程序要处理的问题复杂多样,现有的数据类型无法满足使用要求。所以C++允许用户根据需要声明一些类型。用户可以直接声明的类型包括结构体类型、联合类型、枚举类型和类类型。这些统称为用户定义类型(UDT)。


三、c语言结构体共用体占内存字节Union:
sizeof(union
data1)的值为16,根据默认的编译器设置,这个union的最大基类型是double,占用8个字节,所以这个union从8开始.对齐。字符数组c2占用9个字节,所以整个union应该占用9个字节,但是由于对齐的原因,实际分配给它的内存是16个字节。
结构体:
struct
数据按8字节对齐,long类型的元素1分配8字节。s、i、c和a最初分别占用4、2、1和10个字节。出于对齐原因,s分配4个字节,i分配2个字节,c分配2个字节。此时使用了8个字节。最初,a被分配了10个字节。考虑到对齐方式,整个结构占用的内存量必须是8的倍数,因此分配了16个字节。因此,这些结构体占用8+4+4+2+16=32个字节。