我很想知道#pragma
如何帮助避免结构填充(请给我一个程序来理解它)。
默认情况下,编译器将以对齐的方式分配内存。因此,通过避免结构填充,将会有什么好处的程序员? 什么时候需要避免结构填充?
答案 0 :(得分:2)
技术取决于编译器。
除了可能减少程序消耗的内存量之外,其他好处通常不多。只有在资源很少的机器(例如内存)上,这种好处才有价值,这意味着现代硬件很少需要它。
实际上,成本会降低性能或硬件异常。填充的常见目的是通过以适合主机系统的方式对齐struct成员来提高性能并避免硬件异常。禁用填充基本上会关闭填充的所有好处。
保存几个字节,甚至几千字节,在性能或更多错误条件方面很少受到影响。如果您正在进行某些类型的开发(例如,在资源有限的嵌入式系统上),那么它可能是值得的,但即便如此也并非总是如此。
答案 1 :(得分:1)
1.主要在资源关键的嵌入式系统的情况下避免使用结构填充。在这种情况下,通过以代码存储器为代价打包结构成员来保存RAM(需要更多指令来访问打包的结构成员)。
答案 2 :(得分:1)
结构paddding 编译器将以一个
的倍数分配内存