7

STATUS_STACK_BUFFER_OVERRUN と STATUS_STACK_OVERFLOW があることがわかりました。それらの2つの違いは何ですか?スタック オーバーフロー (スタックの枯渇) がスタック バッファ オーバーフローと同じではないことがわかりましたが、説明がないか、理解できません。あなたは私を助けることができます?

よろしくトバイアス

4

2 に答える 2

8

メモリ内で下向きに成長する次のスタックを考えてみましょう。

+----------------+
| some data      |   |
+----------------+   | growth of stack
| 20-byte string |   V
+----------------+
 limit of stack

20 バイトの文字列に 30 バイトを書き込むと、バッファ オーバーランが発生します。これにより、スタックのさらに上のエントリ (「一部のデータ」) が破損します。

スタック オーバーフローは、スタックが既にいっぱいになっているときに別のものをスタックにプッシュしようとした場合です(「スタックの制限」と表示されている場合)。通常、スタックの最大サイズは制限されています。

于 2012-10-11T10:15:38.373 に答える
0

Stackoverflowbuffer overrunデータを割り当てるためのスペースがメモリ内にない場合に表示さbuffer overflowれ、プログラムがバッファ境界をオーバーランし、メモリの予期しない部分にデータを書き込み/上書きした場合に呼び出されます (予想よりも多くのメモリを消費します)。

これは、タグstackoverflowbuffer overflowの説明を読むだけで簡単に理解できます

于 2012-10-11T10:23:06.983 に答える