/**
* 使用gdb调试该程序,展示内存布局
*/
#include <stdio.h>
void func(int a,int b){
int x,y;
x = a + b;
y = a - b;
}
int main(void){
int x=0;
int y=0;
func(4,3);
return 0;
}
push ebp ;保存上一个栈栈
mov ebp,esp ;设置当前栈帧
sub esp,$N ;给local变量开辟部分内存
leavel
ret
;在32位汇编下相当于
mov esp,ebp;
pop ebp
ret
/**
* 查看环境变量的地址
* break main | run | x /100s *((char **)environ)
*/
#include <stdio.h>
#include <stdlib.h>
int main(void){
char *shell = getenv("MYSHELL");
if(shell){
printf("now env the char point size : %u\n",sizeof(char *));
printf("MYSHELL IS %s\n",shell);
//64位,不能用%x了
printf("The address of MYSHELL 0x%lx\n", (unsigned long int)shell);
}
return 0;
}