C では、alloca() 関数は alloca() の呼び出し元のスタックフレームにメモリを割り当てます。
おそらく割り当てられない膨大な数のバイトを割り当てようとするとどうなりますか?
- スタックがヒープ セグメントに達するまで、できるだけ多くのバイトを割り当てますか?
それとも何も割り当てませんか?
alloca(10000000000000000000);
マニュアルには次のように記載されています。
alloca() 関数は、割り当てられたスペースの先頭へのポインタを返します。割り当てによってスタック オーバーフローが発生した場合、プログラムの動作は未定義です。
動作が未定義であることを理解しています。しかし、それ以上に言うべきことがあります。
- main が呼び出される前のスタックの一番上の後の最初のバイトへのポインターは何を返しますか?
- alloca() が返された後、スタック ポインターは alloca() が呼び出される前とは異なりますか?
誰かがこれについてもっと情報を持っていますか?