実際の実装はプラットフォーム固有のものですが、この考え方は潜在的に危険なバッファオーバーフローの原因です。たとえば、関数スタックが通常 '上に行く'の間にメモリ内の配列が '下に行く'という理由がありますか?
-------------
| arr[0] | \
------------- \
| arr[1] | -> arr[3] is local to a function
-------------/
| arr[2] |/
-------------
| frame ptr |
-------------
| ret val |
-------------
| ret addr |
-------------
| args |
-------------
私の質問は、より良い動詞の欠如のためにローカルアレイが流れ落ちる理由はありますか?代わりに、配列が流れ上がった場合、リターンアドレスを上書きするバッファオーバーフローエラーの数を大幅に減らすことはできませんか?
スレッドを使用することによって、現在のものが呼び出した関数の戻りアドレスを上書きすることができます。しかし、今は無視しましょう。
でポイントを作っています。この答えは最高です。メモリレイアウトの詳細については、http://dirac.org/linux/gdb/02a-Memory_Layout_And_The_Stack.phpを参照してください。スタックとヒープは、使用されていないメモリアドレス空間を最大限に活用するために、反対方向に成長します。 –