Це просто розмір за замовчуванням. Якщо вам потрібно більше, ви можете отримати більше - найчастіше, кажучи лінкеру виділити додатковий простір стека.
Недоліком великих стеків є те, що якщо ви створюєте багато ниток, їм знадобиться по одному стеку. Якщо всі стеки виділяють кілька МБ, але не використовують його, простір буде витрачено даремно.
Ви повинні знайти належний баланс для вашої програми.
Деякі люди, як @BJovke, вважають, що віртуальна пам'ять по суті безкоштовна. Це правда, що вам не потрібно мати фізичну пам’ять, яка підтримує всю віртуальну пам’ять. Ви повинні мати можливість принаймні видавати адреси у віртуальну пам’ять.
Однак на типовому 32-розрядному ПК розмір віртуальної пам'яті збігається з розміром фізичної пам'яті - оскільки ми маємо лише 32 біти для будь-якої адреси, віртуальної чи ні.
Оскільки всі потоки в процесі мають однаковий адресний простір, вони повинні розділити його між собою. А після того, як операційна система взяла свою участь, для програми залишається "лише" 2-3 ГБ. І цей розмір є обмеженням як для фізичної, так і для віртуальної пам’яті, оскільки адрес просто більше немає.