首页 > 试题广场 >

C语言结构体怎么定义节省内存

[问答题]
1.明确结构体成员变量的值域,用适合的类型; 2.根据字节对齐的规则,将成员变量的类型根据从小到大进行声明,尽量减少中间的填补空间; 3.取消字节对齐。#pragma pack(1)。用时间换空间。 4.根据特定的使用的条件下,可以考虑将结构体换成共用体。
发表于 2022-09-24 23:08:00 回复(1)
注:在一定条件下,结构体可以换成共用体。
struct jiegouti{
    long long a;
    char b;
};
换成
union gongyongti{
    long long a;
    char b;
};


发表于 2022-04-30 22:09:06 回复(0)
结构体中的成员定义难道不是按从大到小的顺序声明,更能减少中间的填补空间吗?
发表于 2023-07-09 08:58:12 回复(2)
实际上还有一种使用位字段的方式。
发表于 2023-08-25 16:46:03 回复(0)
(1)满足要求情况下,用小字节变量代替大字节变量 (2)使用位域,但需注意跨平台移植问题 (3)将相同大小的成员变量类型连续定义(有助于减少填充),同时避免大小交错(乱序),按照严格降序或者严格升序排列。 (4)用#pragma pack(1)可以强制紧凑对齐,降低空间但可能影响性能
发表于 2026-04-25 21:35:30 回复(0)
1.字符对齐的规则。 2.明确结构体成员变量的值域。(使用合适的类型) 3.在合适的情况下考虑将结构体换成共用体。
发表于 2025-07-29 21:38:14 回复(0)
把结构体换成联合体
发表于 2025-03-29 13:44:04 回复(0)
1.将内存小的变量类型放在前面,减少填补空间 2.使用合适大小的变量类型 3.取消字节对齐
发表于 2025-03-13 15:27:48 回复(0)
因为要考虑到内存对齐,所以应该按照变量类型的大小排布顺序,更能节省空间。
发表于 2024-10-31 00:19:11 回复(0)
取消字节对齐。按照变量的大小从小到大排列,尽量减少字节对齐。值的位域足够的情况下,使用占用空间更小的类型。
发表于 2024-09-08 21:36:21 回复(0)
1、满足要求的情况下,用小字节变量替换大字节变量 2、将各成员按所占字节数从小到大声明,尽量减少中间的填补空间(字节对齐) 3、取消字节对齐#pragma pack(1),会牺牲效率,谨慎使用
发表于 2024-03-17 19:17:52 回复(0)
1.在保证值域足够的情况下,用小字节变量代替大字节变量,如用short替代int 2.将各成员按其所占字节数从小到大声明,以尽量减少中间的填补空间(字节对齐)。 3.可以取消字节对齐,#pragma pack(1),当然这会牺牲效率,谨慎采用。
发表于 2023-09-01 18:02:07 回复(0)
1、调整结构体成员的顺序 2、将结构体缓冲联合体 3、取消字节对齐 4、用小字节变量代替大字节变量
发表于 2023-08-07 16:39:52 回复(0)