void func() {
int a = 5; // На стеку: RSP - 8
int b = 10; // На стеку: RSP - 16
char c = 'x'; // На стеку: RSP - 24
// Локальні змінні зникають при return
} // RSP повертається до попередного значення
Heap (Динамічна пам'ять)
Міні-вікторина
Чому стек швидше за heap?
Стек у регістрах, heap у RAM
Стек менший
Немає різниці
✅ Правильна відповідь: Стек у регістрах, heap у RAM
💡 Пояснення:
Стек близько до CPU, просто збільшується/зменшується RSP. Heap потребує malloc/free операцій.
Помилка: путати адресу та значення
⚠️ ЗАСТЕРЕЖЕННЯ
Адреса змінної ≠ значення змінної
❌ Неправильно
int x = 42;
printf("%d\n", x); // 42 (значення)
printf("%d\n", &x); // Помилка: адреса — це не int!
&x — це адреса, формат %p (pointer)
✓ Правильно
int x = 42;
printf("Значення: %d\n", x); // 42
printf("Адреса: %p\n", (void*)&x); // 0x7fff5fbff8c0
&x дає адресу (unsigned long), потрібен %p
Основні поняття
Підсумки
x86-64: 64-розрядна архітектура з 16 основними регістрами