И я создаю дочерний процесс в нём с именем "calc2.exe"
2 вложенных if'а можно (и нужно) объединять
я не знаю что такуое man
memcpy
.addM
. new Moved[++mSize]
делает однозначную вещь - массив инстанций. В этом коде нет работы с полиморфизмом. new char[1]
делает выделение всего в один символ. Если ты хочешь хранить там строку, то в такой буфер записать получится лишь пустую строку. Имеющегося пространства в этом буфере хватит только на терминальный символ и все.Там у Виндовз полная фигня
MAX_PATH
определяется значением 260
. Это - максимальная длина строки, принимаемой API функциями в качестве ASCII-представления пути. Ограничения в 255 символов в природе нет. А если учитывать эффект от SetCurrentDirectoryA, то лимитов на длину ASCII-представления пути тоже нет. 260 символов - это лимит промежуточного буфера, в который будет скопировано ASCII-представление твоего пути перед дальнейшей работой с ним.A
, другие принимают UCS2-строки и именуются суффиксом W
. Твой UTF-8 сперва надо перевести в UCS2/UTF-16 и только потом передавать в W
-функцию.SetCurrentDirectoryW
уже спокойно сможет перевести текущую рабочую директорию процесса в папку, в пути которой присутствуют этнические символы. ASCII-вариант тоже может, но только при правильном приведении кодировки строк представления путей. Это та еще задачка по сложности.ExW
-функциями (при наличии вариантов с данными суффиксами). Строки, особенно путей, в WinAPI передает только в UCS2/UTF-16, а пути всегда приводит к UNC-нотации.
Ты не забирал управление чтобы отдавать его кому-то, ты просто сделал в другом процессе исключение и все.