textプロセスの仮想アドレス空間は、プロセスの,dataおよびbssセグメントで始まります。このヒープ割り当てが配置された後、ヒープはより大きなメモリ アドレスに向かって成長します。ただし、ヒープの一部を使用する前に、メモリ ブロックを割り当てる必要がvallocありsegfaultます (など)。
スタックは、仮想アドレス空間の最初の大きなアドレスから小さな値に向かって成長します。私の知る限り、これは仮想メモリの割り当てなしで機能します。ヒープの場合にこれが不可能な場合、事前のメモリ割り当てなしでスタックを使用するにはどうすればよいですか? (同じ線形仮想アドレス空間です。)
これまでのところ、 aiallocaは と同じように実装されていsub esp, <size>ます。しかし、スタックが使用している仮想アドレス空間の領域は、これより前に何らかの形で割り当てられているに違いありませんよね?