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);
}函數
局部變量的內存是保存在棧區 先進棧的會先用大的地址 詳看下圖操作系統