void foo()
{
int array[4];
int i;
for(i=0;i<=4;i++)
{
array[i]-=4;
}
}
有些操作系统的内存模型不同
访问相同内存
void ReclareAndInitArray(){
int array[100];
int i;
for(i=0;i<100;i++)
array[i]=i;
}
void PrintArray()
{
int array[100];
int i;
for(i=0;i<100;i++)
printf("%d\n",array[i])
}
int main()
{
ReclareAndInitArray();
PrintArray();
}
不会出错。因为访问同一块内存。
printf原型
int printf(const char *control,...)
printf(“%d+%d=%d\n”,4,4,8)
栈帧
8
4
4
指针指向”%d+%d=%d\n”
saved pc
struct base{
int code;
};
struct type_1{
int code;
...
};
struct type_2{
int code;
}
Makefile & gcc
操作系统管理器 把虚拟地址映射成实际地址
每一个进程拥有独立的空间