Linux では、スタック オーバーフローの原因は、システム スタックが上位アドレスから下位アドレスに増加し、データは下位アドレスから上位アドレスの順序で書き込まれるため、プログラムが一度書き込みを行わなくなることです。文字数が制限されているため、現在のスタックからデータがオーバーフローする可能性があります。スタック オーバーフローはバッファ オーバーフローの一種で、基本的にスタックに書き込まれたデータがスタックのサイズを超えたことが原因で発生します。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
概要
スタックとは、必要なときにコンパイラによって割り当てられ、不要になったときに自動的にクリアされるものです。変数。内部の変数は通常ローカル変数、関数パラメータなどで、ヒープに比べてスタックは通常非常に小さいですが、Linux では ulimit -s でスタックのサイズを確認できます。
いわゆるスタック オーバーフローは、バッファ オーバーフローの一種です。基本的に、スタックに書き込まれるデータがスタックのサイズを超え、そのデータが他のユニットに書き込まれることになり、多くの場合、予測不可能な結果を引き起こします。最も一般的なのはプログラムの崩壊です。
スタック オーバーフローの原因
システム スタックは上位アドレスから下位アドレスに成長し、データは下位アドレスから上位アドレスの順に書き込まれます。プログラムは入力文字数を制限していないため、データが現在のスタック フレームからオーバーフローし、リターン アドレスを上書きして、プログラムの実行フローを制御する可能性があります。
#例は次のとおりです。#スタック オーバーフロー プログラム:
推奨学習:
Linux ビデオ チュートリアル以上がLinuxスタックオーバーフローの原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。