Размер стека в нескольких проектах

Допустим, у меня есть решение C ++ Visual Studio с 5 проектами A, B, C, D и E. Проекты установили параметр компоновщика / STACK следующим образом:

  • A = 4 МБ
  • B = пусто (по умолчанию 1 МБ)
  • C = пусто (по умолчанию 1 МБ)
  • D = 16 МБ
  • E = 25 МБ

Все они построены как отдельные библиотеки DLL с открытыми функциями. Проект:

  • A содержит функцию foo_a, которая вызывает foo_b (из B) и foo_c (из C)
  • B содержит функцию foo_b, которая вызывает foo_d (из D) и foo_e (из E)

Каков будет размер стека, если я вызову функцию A.foo_a? Будет ли то же самое, если я позвоню напрямую E.foo_e?

1

Решение

Потоки, запущенные вручную (с помощью CreateThread), могут получить произвольный размер из аргументов вызова функции, размер стека основного потока задается в соответствии с информацией из EXE.

Ваши пять DLL не имеют значения вообще.
У них может быть свой размер, установленный компоновщиком в заголовке файла,
но ОС ничего с этим не сделает.

(Размер стека времени выполнения (в Windows) — для каждого потока, а не для файла.)

1

Другие решения


По вопросам рекламы [email protected]