Почему бы не использовать размер стека по умолчанию 2 или 4 МБ в 64-разрядных приложениях C++ Builder?

Это в основном из любопытства, возможно, есть веская причина, о которой я не знаю? Вопрос также возник из-за того, что я столкнулся с переполнением стека из-за странного набора данных, из-за которого функция вызывала сама себя большое количество раз. Простое решение заключалось в том, чтобы увеличить размер стека, пока у меня не будет времени «правильно» исправить эту проблему.

Я исправил это, установив размер стека на 2 МБ для 64-битных версий программного обеспечения.

Я был удивлен, что по умолчанию он равен 1 МБ (для 64-разрядных приложений Windows) в C++ Builder 11? Я где-то читал, что 64-битные приложения С# по умолчанию получают 4 МБ?

Имеет смысл предоставить 64-битным приложениям немного больший размер стека, поскольку при той же функциональности (32-битное и 64-битное) 64-битное приложение, скорее всего, будет использовать больше стека, особенно если временно хранится много указателей. Таким образом, чтобы получить равную функциональность до того, как стек иссякнет, 64-битное приложение должно для начала получить больший размер стека.

По крайней мере, это мое мнение.

Поэтому мне интересно, почему 64-разрядная версия C++ Builder по умолчанию имеет размер 1 МБ?

Оплошность или очень специально?

0 ответов

Другие вопросы по тегам