2010年11月12日星期五

linux系统下栈大小的计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
 
static int i = 0;
static int c = 0;
int r1 = 0, r2 = 0;
 
static void
func_stack()
{
 
    int ret;
    /* 输出函数的%ebp的地址
     */
    if (c < 2) {
 asm("movl %%ebp, %%eax; movl %%eax, %0;"
     :"=r" (ret)
     :
     :"%eax");
 
 if (c == 0) {
     r1 = ret;
 } else if (c == 1) {
     r2 = ret;
 }
 c++;
    }
 
 
    while (1) {
 printf("i=%d stack:%d all:%ld\n", i, r1 - r2, (long )(r1-r2)*i);
 i++;
 func_stack();
    }
}
 
int
main(void)
{
    func_stack();
    return 0;
}
代码计算出的数字和ulimit -a得出的结果相同。8M

没有评论:

发表评论