緩衝領域、クッション領域。
プログラムで処理を行なう際、データを一時的に格納するためのメモリ領域をいう。
例えば、実際の処理の前に、処理に都合の良いようにデータを加工して保管して置く場所として用いたり、他の処理とデータのやり取りをする際、お互いのデータを格納するための領域として用いたりする。
バッファをどこに確保するかは、様々な手法がある。
アセンブリ言語などでは決まったアドレスにサイズを確保して扱う簡易な方法がよく使われる。CやC++などでもstaticなグローバル変数は同様の扱いとなる実装が多いようである。
CやC++では、関数内でautoで確保した変数はスタックに領域が確保される。CのmallocやC++のnewを用いて確保したものはヒープに領域が確保されている。
バッファの管理方法には、主に次のような方法が使われる。
データ通信の場合は、送信バッファや受信バッファなどとしてバッファを用い、この管理にはよくリングバッファが用いられる。
リングバッファを用いない処理の場合、想定以上のサイズのデータを受信した場合にはバッファが溢れることがある。このとき、プログラムの格納されたメモリ領域があふれた不正なデータで上書きされてしまうことがある。
これはバッファオーバーフローと呼ばれるバッファ管理プログラムのバグであるが、ありがちなバグであり、古くからプログラマを苦しめた。
これを悪用すると通信のデータ中に破壊プログラムなどを混入させ、それを受信した端末のデータ等を故意に破壊する事も可能となる。