如何避免结构填充?

How to avoid structure padding?

我很想知道 #pragma 如何帮助避免结构填充(请给我一个程序来理解它)。

默认情况下,编译器将以对齐方式分配内存。那么通过避免结构填充,程序员会得到什么好处呢? 什么时候需要避免结构填充?

1.Structure 在资源关键的嵌入式情况下,主要避免填充 systems.In 这种情况下,通过打包结构成员以牺牲代码内存来节省 RAM(需要更多指令来访问打包的结构成员).

  1. 在某些情况下,字节数组被映射到结构成员以便于访问。

技术取决于编译器。

除了可能减少程序消耗的内存量之外,通常没有什么好处。只有在资源(例如内存)很少的机器上才有价值,这意味着现代硬件很少需要它。

实际上,代价是性能下降或硬件异常。填充的常见目的是通过以适合主机系统的方式对齐结构成员来提高性能和避免硬件异常。不允许填充基本上会关闭填充的所有好处。

节省几个字节,甚至几千字节,在性能或更多错误条件方面的影响很少值得。如果您正在进行某些类型的开发(例如在资源有限的嵌入式系统上),这可能是值得的,但即便如此也不总是如此。

可以通过使用预处理器指令#pragma 1 来避免结构填充 编译器将以 one

的倍数分配内存