SoUrcerer wrote:
Здорово, супер. А разве ядро не может выделить памяти столько, сколько нужно для содержимого командной строки, и затем выделить её, и передать указатель? Я понимаю, что в самом лучшем случае можно сэкономить 60 килобайт ОЗУ, но интересно - такой вариант не рассматривался?
Ядро может выделить сколько есть длины строки в текущий момент (это я просто максимальное значение ограничил) с учетом наличия максимального количества памяти, а приложению нужно
уже иметь максимально выделенный объем. Так что в самом худшем случае уже будет 64+64=128 Кб.
Вопрос с очень длинными строкам (over 100500) по моему субъективному личному мнению должен решаться через именованную (расшаренную память) - это достаточно специфические случаи и держать ради этого максимальный объем еще и в запускаемом приложении немного неразумно.
SoUrcerer wrote:
Я понимаю, что в самом лучшем случае можно сэкономить 60 килобайт ОЗУ
На самом деле можно сэкономить 64 Кб -256 байт, так как используется старый статично выделенный буфер на 256 байт и выделения памяти через менеджер памяти не происходит.