查看电脑中所分配栈的大小。
代码全览
#include <stdio.h>
#include <stdlib.h>
int recurse(int x
) {
int a
[1<<15];
printf("x = %d. a at %p\n", x
, a
);
a
[0] = (1<<14)-1;
a
[a
[0]] = x
-1;
if (a
[a
[0]] == 0)
return -1;
return recurse(a
[a
[0]]) - 1;
}
int main(int argc
, char *argv
[]) {
int x
= 100;
if (argc
> 1)
x
= atoi(argv
[1]);
int v
= recurse(x
);
printf("x = %d. recurse(x) = %d\n", x
, v
);
return 0;
}
运行结果
suiyi@suiyi
-virtual
-machine
:/mnt
/hgfs
/share
/runaway$
./a
.out
x
= 100. a at
0x7ffeb78d4f50
x
= 99. a at
0x7ffeb78b4f20
x
= 98. a at
0x7ffeb7894ef0
x
= 97. a at
0x7ffeb7874ec0
x
= 96. a at
0x7ffeb7854e90
x
= 95. a at
0x7ffeb7834e60
x
= 94. a at
0x7ffeb7814e30
x
= 93. a at
0x7ffeb77f4e00
x
= 92. a at
0x7ffeb77d4dd0
x
= 91. a at
0x7ffeb77b4da0
x
= 90. a at
0x7ffeb7794d70
x
= 89. a at
0x7ffeb7774d40
x
= 88. a at
0x7ffeb7754d10
x
= 87. a at
0x7ffeb7734ce0
x
= 86. a at
0x7ffeb7714cb0
x
= 85. a at
0x7ffeb76f4c80
x
= 84. a at
0x7ffeb76d4c50
x
= 83. a at
0x7ffeb76b4c20
x
= 82. a at
0x7ffeb7694bf0
x
= 81. a at
0x7ffeb7674bc0
x
= 80. a at
0x7ffeb7654b90
x
= 79. a at
0x7ffeb7634b60
x
= 78. a at
0x7ffeb7614b30
x
= 77. a at
0x7ffeb75f4b00
x
= 76. a at
0x7ffeb75d4ad0
x
= 75. a at
0x7ffeb75b4aa0
x
= 74. a at
0x7ffeb7594a70
x
= 73. a at
0x7ffeb7574a40
x
= 72. a at
0x7ffeb7554a10
x
= 71. a at
0x7ffeb75349e0
x
= 70. a at
0x7ffeb75149b0
x
= 69. a at
0x7ffeb74f4980
x
= 68. a at
0x7ffeb74d4950
x
= 67. a at
0x7ffeb74b4920
x
= 66. a at
0x7ffeb74948f0
x
= 65. a at
0x7ffeb74748c0
x
= 64. a at
0x7ffeb7454890
x
= 63. a at
0x7ffeb7434860
x
= 62. a at
0x7ffeb7414830
x
= 61. a at
0x7ffeb73f4800
x
= 60. a at
0x7ffeb73d47d0
x
= 59. a at
0x7ffeb73b47a0
x
= 58. a at
0x7ffeb7394770
x
= 57. a at
0x7ffeb7374740
x
= 56. a at
0x7ffeb7354710
x
= 55. a at
0x7ffeb73346e0
x
= 54. a at
0x7ffeb73146b0
x
= 53. a at
0x7ffeb72f4680
x
= 52. a at
0x7ffeb72d4650
x
= 51. a at
0x7ffeb72b4620
x
= 50. a at
0x7ffeb72945f0
x
= 49. a at
0x7ffeb72745c0
x
= 48. a at
0x7ffeb7254590
x
= 47. a at
0x7ffeb7234560
x
= 46. a at
0x7ffeb7214530
x
= 45. a at
0x7ffeb71f4500
x
= 44. a at
0x7ffeb71d44d0
x
= 43. a at
0x7ffeb71b44a0
x
= 42. a at
0x7ffeb7194470
x
= 41. a at
0x7ffeb7174440
x
= 40. a at
0x7ffeb7154410
x
= 39. a at
0x7ffeb71343e0
x
= 38. a at
0x7ffeb71143b0
段错误
(核心已转储
)
suiyi@suiyi
-virtual
-machine
:/mnt
/hgfs
/share
/runaway$
./a
.out
38
x
= 38. a at
0x7ffe3b85a270
x
= 37. a at
0x7ffe3b83a240
x
= 36. a at
0x7ffe3b81a210
x
= 35. a at
0x7ffe3b7fa1e0
x
= 34. a at
0x7ffe3b7da1b0
x
= 33. a at
0x7ffe3b7ba180
x
= 32. a at
0x7ffe3b79a150
x
= 31. a at
0x7ffe3b77a120
x
= 30. a at
0x7ffe3b75a0f0
x
= 29. a at
0x7ffe3b73a0c0
x
= 28. a at
0x7ffe3b71a090
x
= 27. a at
0x7ffe3b6fa060
x
= 26. a at
0x7ffe3b6da030
x
= 25. a at
0x7ffe3b6ba000
x
= 24. a at
0x7ffe3b699fd0
x
= 23. a at
0x7ffe3b679fa0
x
= 22. a at
0x7ffe3b659f70
x
= 21. a at
0x7ffe3b639f40
x
= 20. a at
0x7ffe3b619f10
x
= 19. a at
0x7ffe3b5f9ee0
x
= 18. a at
0x7ffe3b5d9eb0
x
= 17. a at
0x7ffe3b5b9e80
x
= 16. a at
0x7ffe3b599e50
x
= 15. a at
0x7ffe3b579e20
x
= 14. a at
0x7ffe3b559df0
x
= 13. a at
0x7ffe3b539dc0
x
= 12. a at
0x7ffe3b519d90
x
= 11. a at
0x7ffe3b4f9d60
x
= 10. a at
0x7ffe3b4d9d30
x
= 9. a at
0x7ffe3b4b9d00
x
= 8. a at
0x7ffe3b499cd0
x
= 7. a at
0x7ffe3b479ca0
x
= 6. a at
0x7ffe3b459c70
x
= 5. a at
0x7ffe3b439c40
x
= 4. a at
0x7ffe3b419c10
x
= 3. a at
0x7ffe3b3f9be0
x
= 2. a at
0x7ffe3b3d9bb0
x
= 1. a at
0x7ffe3b3b9b80
x
= 38. recurse(x
) = -38
suiyi@suiyi
-virtual
-machine
:/mnt
/hgfs
/share
/runaway$
./a
.out
6
x
= 6. a at
0x7fff7442d560
x
= 5. a at
0x7fff7440d530
x
= 4. a at
0x7fff743ed500
x
= 3. a at
0x7fff743cd4d0
x
= 2. a at
0x7fff743ad4a0
x
= 1. a at
0x7fff7438d470
x
= 6. recurse(x
) = -6
转载请注明原文地址: https://yun.8miu.com/read-134281.html