C语言代码
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int sum(int a, int b) {
int result = a + b;
return result;
}
int main() {
int x = 5;
int y = factorial(3);
int z = sum(x, y);
printf("结果: %d\n", z);
return 0;
}
这是一个包含多个函数调用的C程序示例。观察函数调用时栈帧的创建和销毁过程。
函数调用栈
内存布局
栈 (Stack)
0x7ffd42a1b5a0
main() 返回地址
0x7ffd42a1b598
main() 栈帧基址
堆 (Heap)
0x55a1b4e2b6b0
动态分配内存
数据段 (Data Segment)
0x55a1b4e2a010
全局变量
代码段 (Text Segment)
0x55a1b4e2a000
程序指令