1.段是指二进制文件内的区域,所有某种特定类型信息被保存在里面。linux下可以用size得到可执行文件中各个段的大小,在可执行程序中,正文段存储指令,数据段存储已经初始化的全局变量和静态变量, BSS段储存未赋值的全局变量和静态变量,BSS段内变量一般会被程序初始化为0;
2.在运行时,程序会动态创建一个堆栈端,里面存放着调用栈,因此保存着函数的调用关系和局部变量。
3.那么栈空间到底有多大呢? 这和操作系统相关。在 Linux中,栈大小是由系统命令ulimit指定的, 例如ulimit -s 显示当前栈大小, 而ulimit -s 32768 将把栈大小指定为32MB.但在Windows中,栈大小是储存在可执行文件的。使用Gcc可以这样指定可执行文件的栈大小: gcc -WI,--stack=16777216,把栈大小变成16MB(-WI 是将参数传给链接器,所以stack大小其实实在链接的时候指定的)。