Розмір стека потоку
Розмір стека потоку
Кожен новий потік отримує свій власний простір стека, що складається, і з віртуальної пам'яті у файлі підкачки, і пам'яті, що зарезервована. Система поміщає односторінкові блоки із зарезервованої пам'яті стека, як потрібно, доки стек не зможе більше зростати.
Заданий за замовчуванням розмір для переданої та зарезервованої пам'яті встановлюється у заголовку файлу, що виконується. Задана за замовчуванням зарезервована пам'ять дорівнює одному мегабайту. Щоб установити інший розмір стека за замовчуванням, використовуйте інструкціюSTACKSIZEу файлі визначення модуля (.DEF). Компонувальник може також підтримувати параметр командного рядка для встановлення розміру стека. Для отримання додаткової інформації див.документацію, включену до вашого компонувальника.
Потоки, які викликають бібліотеки мовиCперіоду виконання абоWindows API, повинні забезпечувати достатнє місце у стеку для використання цих функцій. Не зменшуйте зарезервований розмір стека нижче 64 кілобайт.
Щоб збільшити обсяг вільного простору стека, який повинен передаватися спочатку для потоку, встановіть значенняdwStackSizeфункціїCreateThreadабоCreateRemoteThread. Це значення округляється до найближчої сторінки. Виклик, який створює потік, завершується помилкою, якщо немає достатньої пам'яті, щоб передати на зберігання або зарезервувати кількість необхідних байтів. Якщо параметрdwStackSizeменший за заданий за замовчуванням резервний розмір, новий потік використовує заданий за замовчуванням резервний розмір. Якщо параметрdwStackSizeбільший за заданий за замовчуванням резервний розмір, резервний розмір округляється донайближчого числа кратного 1 Мбайт.
Windows XP: Якщо параметрdwCreationFlagsфункціїCreateThreadабоCreateRemoteThread-STACK_SIZE_PARAM_IS_A_RESERVATION, параметрdwStackSizeвстановлює обсяг вільного простору стека, який має бути спочатку зарезервований для потоку.
Стек звільняється, коли закінчується робота потоку.