Stack — automatic, limited, fast. Heap — manual, large, slower.
Stack:
1void func() {2 int x = 10; // Stack3 int arr[100]; // Stack4 // Automatic cleanup on function exit5}
Heap:
1void func() {2 int* ptr = new int(10); // Heap3 int* arr = new int[100]; // Heap4 // Must manually delete!5 delete ptr;6 delete[] arr;7}
When to use: