其实就是在函数中记录自动变量的地址; 递归再次调用函数重复入栈再次记录其地址, 比较两次地址, 就可以知道栈帧增长的方向,自然就知道了栈增长的方向
- #include
- 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;
-
- auto char dummy;
-
- if (addr == NULL)
- {
- addr = &dummy;
-
- find_stack_direction ();
- }
- else
- if (&dummy > addr)
- stack_dir = 1;
- else
- stack_dir = -1;
- }
阅读(951) | 评论(0) | 转发(0) |