Процесс может иметь много потоков. После создания потоку выделяется стек размером в 1 Мбайт. Выделенная для стека память используется для передачи параметров в методы и хранения определенных в пределах методов локальных переменных.
Стэк (stack) - это область памяти в адресном пространстве.
Стэк (stack) растет снизу вверх.
Каждый новый элемент помещаются в самый вверх.
При удалении: первым удалится элемент который находится в самом вверху.
Стэк (stack) использует алгоритм "последний вошел - первый вышел" (last-in-first-out) LIFO
Стэк (stack) используется для:
• передачи параметров в методы
• хранения локальных переменных внутри метода
C#
class Program
{
static void Main(string[] args)
{
Calculate(4, 7);
}
static int Calculate(int a, int b)
{
return a + b;
}
}
C#
class Program
{
static void Main(string[] args)
{
Calculate(10);
}
static int Calculate(int param1)
{
int x = 6;
int y = x + param1;
return y;
}
}
При вызове этого метода
Calculate в стек будут помещаться значения
t,
x,
y и
z. Они определяются в контексте данного метода. Когда метод завершится, все эти переменные уничтожаются, и память в стеке очищается.
Причем если параметр или переменная метода представляет
тип значений, то в стеке будет храниться значение этого параметра или переменной. Например, в данном случае переменные и параметр метода
Calculate представляют
тип значений int, поэтому в стеке будут храниться их
числовые значения.
{
static void Main(string[] args)
{
Calculate(4, 7);
}
static void Calculate(int a, int b)
{
return a + b;
}
}
void не может возвращать return