Было бы проще, если бы вы показали исходный код, который произвел это, но 40 байтов не так много для 64-битной машины. Это всего пять long
с или указателей. Другая вещь, которую следует принять во внимание, - выравнивание для локальных переменных - компилятор, вероятно, дополняет их для оптимального доступа.
Edit:
Хм, это действительно немного озадачивает. Выполнение этого через GCC не приводит к такому захвату стека. Я подозреваю, что это требование пролога для обработки исключений, специфичное для компилятора (вы видите какие-то странные метки до и после выделения стека в сгенерированном коде?).
Вот несколько ссылок MSDN, которые могут оказаться полезными:
У меня нет Windows-бокса для тестирования, но попробуйте /favor:???
и посмотрите, не устранит ли это немного повышение уровня оптимизации. В конце концов, это функция листьев.
Кроме того, форматирование комментариев на SO отстой, поместите код в сам вопрос.