このページでは、プログラミングや通信分野におけるパディングを説明します。ほかにも、デザインの領域での「パディング」があります。
なんらかの目的のために、データの途中や前後に追加する、それ自体には意味を持たないデータのこと、あるいはそうしたデータを追加することをいいます。
パディングがビット単位のものであればパティングビット(詰め物ビット)、バイト単位のものであればパディングバイト(詰め物バイト)と呼ぶことがあります。
パディングを追加する主な理由は、1つにはデータの大きさを一定にするため、もう1つにはアラインメントのためです。
前者は、なんらかの制約があるだとか、大きさが揃っていたほうが効率がよくなる理由があるといったことから、データの大きさを一定にしたい場合です。たとえば 128バイトの大きさでデータを扱いたいが、実際のデータが 90バイトしかないのなら、不足している 38バイトをパディングで補うということです。
後者のアラインメントのために追加するパディングの例としては、構造体のメンバのあいだ、あるいは末尾に追加されるパディングがあります。
C言語による解説が、C言語編第26章および第37章にあります。
いずれにしても、パディングとして追加された部分の中身には用がないので適当な内容で埋めることになります。このとき本当に適当にしてしまう場合もありますし(そのときのメモリの内容をそのままにしておく)、きれいに 0 で埋めておく場合もあります。前者は余計な手間がなく効率的ですが、パディング部分の内容を参照するプログラムを書いてしまうと、そこにある内容は不定なのでバグの原因になります。
構造体のパディングによるバグの話題は、C言語編>逆引き>2つの構造体が一致しているか調べるにあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |