バッファオーバーラン
日本語 | 文字配列走り過ぎ |
英語 | buffer overrun |
ふりがな | ばっふぁおーばーらん |
フリガナ | バッファオーバーラン |
文字列を格納する配列を越えて文字を書き込もうとすること。
文字列を配列で格納している場合に、その配列のサイズを越えたインデックスナンバーを指定して格納しようとすること。ArrayIndexOutOfBoundsException例外が投げられる。
文字列の配列を「バッファ」と呼び、その範囲を超えるため「バッファオーバーラン」と呼ばれる。
Java以外の言語では、このバッファオーバーランによって「バッファオーバーフロー」が発生させられるため、バッファオーバーフローの原因、もしくは同義語として使われる。
文字列を配列で格納している場合に、その配列のサイズを越えたインデックスナンバーを指定して格納しようとすること。ArrayIndexOutOfBoundsException例外が投げられる。
文字列の配列を「バッファ」と呼び、その範囲を超えるため「バッファオーバーラン」と呼ばれる。
Java以外の言語では、このバッファオーバーランによって「バッファオーバーフロー」が発生させられるため、バッファオーバーフローの原因、もしくは同義語として使われる。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
try
{
// たとえばchar型配列で4文字の場合。
char[] chars = new char[4];
// ここに、1文字ずつ書き込み、サイズを越えて書き込もうと
// することでバッファオーバーランしてみます。
String string = "あいうえお";
// 1文字ずつコピーします。
// 配列のサイズより1文字多いとこがポイント。
for( int iF1 = 0; iF1 < string.length(); ++iF1 )
{
chars[iF1] = string.charAt( iF1 );
}
}
catch( ArrayIndexOutOfBoundsException e )
{
e.printStackTrace();
// java.lang.ArrayIndexOutOfBoundsException: 4
// at Sample.main(Sample.java:19)
}
// このように例外が発生します。
// もし例外が発生しなかったら、バッファオーバーフローが
// 可能になってしまいます。
}
}
public class Sample
{
public static void main( String[] args )
{
try
{
// たとえばchar型配列で4文字の場合。
char[] chars = new char[4];
// ここに、1文字ずつ書き込み、サイズを越えて書き込もうと
// することでバッファオーバーランしてみます。
String string = "あいうえお";
// 1文字ずつコピーします。
// 配列のサイズより1文字多いとこがポイント。
for( int iF1 = 0; iF1 < string.length(); ++iF1 )
{
chars[iF1] = string.charAt( iF1 );
}
}
catch( ArrayIndexOutOfBoundsException e )
{
e.printStackTrace();
// java.lang.ArrayIndexOutOfBoundsException: 4
// at Sample.main(Sample.java:19)
}
// このように例外が発生します。
// もし例外が発生しなかったら、バッファオーバーフローが
// 可能になってしまいます。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { try { // たとえばchar型配列で4文字の場合。 char[] chars = new char[4]; // ここに、1文字ずつ書き込み、サイズを越えて書き込もうと // することでバッファオーバーランしてみます。 String string = "あいうえお"; // 1文字ずつコピーします。 // 配列のサイズより1文字多いとこがポイント。 for( int iF1 = 0; iF1 < string.length(); ++iF1 ) { chars[iF1] = string.charAt( iF1 ); } } catch( ArrayIndexOutOfBoundsException e ) { e.printStackTrace(); // java.lang.ArrayIndexOutOfBoundsException: 4 // at Sample.main(Sample.java:19) } // このように例外が発生します。 // もし例外が発生しなかったら、バッファオーバーフローが // 可能になってしまいます。 } }