MS-DOS中的堆栈段
在DOS中,在建立可执行文件时,堆栈的大小必须同时确定,而且不能在运行时增长。如果所需要的堆栈空间大于所分配的空间,那么你的程序就会迷失。如果设置了检查选项,就会收到“STACK OVERFLOW!”(堆栈溢出)消息。如果使用的内存超出了段的限制,编译器也会发出这样一条信息。
如果在一个单一的段中放置太多的数据或代码时,Turbo C就会发出一条信息,告诉你“Segment overflowed maximum size<lsegname>”(段溢出,超过了《段名》的最大值)。在80x86架构中,段的最大限制是64KB。
在Microsoft编译器中,程序员可以把堆栈的大小作为一个链接器参数来确定。
STACK:nnn
这个参数告诉Microsoft链接器为堆栈分配nnn字节
Borland编译器则使用一个特殊名字的变量:
unsigned int _stklen = 0x4000; /*16KB堆栈*/