В сборке нет такого понятия, как куча.
Под Windows командная строка хранится где-то 1 , и приложение может получить указатель на нее с помощью GetCommandLineA
или GetCommandLineW
.
Обратите внимание, что аргументы не обрабатываются, как в C или Linux, командная строка представляет собой одну строку.
GetCommandLineA
возвращает строку из 8-битных байтов с использованием кодировки системы, например, CP1252.
GetCommandLineW
возвращает строку кодовых единиц UTF16, поэтому она не зависит от локали.
Обратите внимание, что в шрифте командной строки отсутствует глиф для нескольких символов (например, для €
) с использованием символа замены ?
, но байтовые / кодовые единицы обрабатываются правильно.
1 Он находится в структуре _RTL_USER_PROCESS_PARAMETERS
в PEB
, как UNICODE_STRING
.Он конвертируется в DllMain
из kernelbase.dll
.