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-нотации. (*++argv) [0] - сместить указатель на следующую ячейку, провести разыменование этой ячейки, взять первый элемент по адресу в этой ячейке.argv имеет тип const char* const argv[]. В ячейках argv лежат элементы типа const char* const, для которых тоже характерны операторы разыменования и произвольного доступа. "". Лично я не вижу проблемы его вывести.std::cout << 'Hello, world''Hello, world' вообще не является ни строковым, ни символьным литералом. Это - значение с типом int. C2659 говорит о том, что ты пытаешься использовать имя функции как имя переменной. Это, в целом, абсолютно недопустимо.exit, но объявлена она в пространстве std, которое ты мог не подумавши раскрыть в глобальное пространство.exit. Ты вполне мог воспользоваться заголовком, где она описана.::exit является полной квалификацией имени с расположением в глобальном пространстве. Имя функции с большим приоритетом будет выбрано из глобального пространства.#pragma once буквально невозможно специфицировать в рамках стандарта и поэтому она не может быть стандартной.
Посмотри документацию на
memcpy.Закон роста у тебя сейчас линейный, единичный. Это очень неоптимально с точки зрения скорости работы с памятью. Лучше использовать пропорциональный закон, т.е. расти на некоторый процент текущего буфера, но не меньше чем на 1 символ. Или можно использовать геометрический закон (буфер растет в N раз). Или - линейный, но с большим интервалом (не на 1, а на 4 или 16, например).
Для правильного отслеживания состояния буфера тебе нужно рядом с буфером еще два поля - емкость буфера (capacity) и используемая длина (length). Емкость - это текущий размер буфера. Используемая длина - это длина заполненной значениями части буфера. Думаю, как на базе этих полей реализовать любой закон роста, ты сам легко догадаешься.
Ну и решением свой ответ стоит обозначить, т.к. ты сам смог, пусть и с подсказкой, решить свой вопрос.