Размер на стека на резбата

Размер на стека на резбата

Всяка нова нишка получава свое собствено стеково пространство, състоящо се както от виртуална памет във файла за пейджинг, така и от запазена памет. Системата изтласква блокове от една страница от запазената памет на стека, ако е необходимо, докато стекът може да расте повече.

Размерът по подразбиране за прехвърлена и запазена памет е зададен в заглавката на изпълнимия файл. Запазената памет по подразбиране е един мегабайт. За да зададете различен размер на стека по подразбиране, използвайте инструкцията РАЗМЕР във файла за дефиниция на модула (.DEF). Вашият линкер може също да поддържа параметър на командния ред за задаване на размера на стека. За повече информация вижте. документацията, включена във вашия линкер.

Конци, които извикват езикови библиотеки ° С период на изпълнение или API на Windows, трябва да осигури достатъчно място в стека за използване на тези функции. Не свивайте резервирания размер на стека под 64 килобайта.

За да увеличите количеството свободно пространство на стека, което трябва да бъде прехвърлено първо за нишка, задайте стойност в параметъра dwStackSize функции CreateThread или CreateRemoteThread . Тази стойност се закръглява до най-близката страница. Повикване, което създава нишка, се проваля, ако няма достатъчно памет за съхраняване или резервиране на необходимия брой байтове. Ако параметър dwStackSize по-малко от резервния размер по подразбиране, новият поток използва резервния размер по подразбиране. Ако параметър dwStackSize по-голям от резервния размер по подразбиране, резервният размер се закръглява до най-близкото кратно на 1 MB.

Уиндоус експи: Ако параметър dwCreationFlags функции CreateThread или CreateRemoteThread - STACK_SIZE_PARAM_IS_A_RESERVATION, параметър dwStackSize задава количеството свободно място в стека, което първо трябва да бъде запазено за нишка.

Стекът се освобождава, когато нишката излезе.