1.应用程序启动后,操做系统会为应用程序在栈区中开辟内存空间,用于存放局部变量,以及函数的参数等
2.iOS主线程栈区大小为1M,MAC主线程栈区大小为8M
3.栈区中的变量由编译器负责分配和释放
4.栈区中的数据是以“栈”的形式管理的,先进后出(FIBO)
5.访问栈区中变量的效率高,不会出现内存碎片
6.栈区中的变量名(不带*)至关因而指向栈区数据的指针别名,变量名能够简化程序员的工做程序员
int sum(int x, int y)
{
NSLog(@"x: %p, Y: %p", &x, &y);
int result = x + y;
NSLog(@"%p", &result);
return result;
}
void demo1()
{
// 在栈区中的变量,i本质上对应"内存地址"的"标签"
// 指针 * 表示指向内容空间的内容 & 表示地址
int i = 10;
i = i + 5;
NSLog(@"==== %d", *(&i));
int j = 20;
NSLog(@"i:%p, J:%p", &i, &j);
int result = sum(i, j);
NSLog(@"%d %p", result, &result);
}函数
局部变量的内存是保存在栈区 先进栈的会先用大的地址 详看下图操作系统