- 论坛徽章:
- 0
|
谢谢回复
这样的:
- #include <iostream>
- #include <tchar.h>
- using namespace std;
- int *test(int i, int j)
- {
- int m = i + j;
- return &m;
- }
- int *test1(int i)
- {
- int m = i + 100;
- return &m;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int *pi1 = test(1, 2);
- printf("%d----%d\n", pi1, *pi1); // 1244612----3 ------ A
- int *pi2 = test(4, 5);
- printf("%d----%d\n", pi2, *pi2); // 1244612----9 ------ A
- int *p = test1(100);
- printf("%d----%d\n", p, *p); // 1244616----200 ----- B
- int *pi3 = test(7, 8);
- printf("%d----%d\n", pi3, *pi3); // 1244612----15 ------ A
- getchar();
- return 0;
- }
复制代码
A 处调用多次同一个函数返回的栈地址都是相同的;
B 处调用不同的函数返回的栈地址不同,但如果 test1() 的形参个数和 test() 相同,则 B 处的地址也相同
所以,基于此是否可以得出一个结论:同一个函数多次调用在进程中所用的栈空间是相同的(包含调用、递归调用除外)
可以这样说吗 ? 发这个贴是想弄明白函数调用时的栈空间管理 , 请大家讲讲,谢谢 |
|