其实就是在函数中记录自动变量的地址; 递归再次调用函数重复入栈再次记录其地址, 比较两次地址, 就可以知道栈帧增长的方向,自然就知道了栈增长的方向 #include<stdio.h> static void find_stack_direction(void); static int stack_dir; int main(void) { find_stack_direction(); if(stack_dir==1) puts("stack grew upward"); else puts("stack grew downward"); return 0; } static void find_stack_direction (void) { static char *addr = NULL; /* address of first `dummy', once known */ auto char dummy; /* to get stack address */ if (addr == NULL) { /* initial entry */ addr = &dummy; find_stack_direction (); /* recurse once */ } else /* second entry */ if (&dummy > addr) stack_dir = 1; /* stack grew upward */ else stack_dir = -1; /* stack grew downward */ }