Ваше использование strcpy_s подозрительно.
major = new char[strlen(mymajor) + 1];
strcpy_s(major, strlen(major), mymajor);
Вторым параметром strcpy_s
является выделенный размер буфера, указанный первым параметром. (И я только сейчас понял - основываясь на другом ответе, что strlen(major)
не определено, прежде чем копировать в него!
Вы выделяете буфер достаточно большим для размещения строки, но последующий вызов strcpy_s указывает, что major
недостаточно велик для хранения всей строки, включая нулевой символ.
Лучше:
size_t len = strlen(mymajor) + 1;
major = new char[len];
strcpy_s(major, len, mymajor);
Повторите вышеприведенный шаблон и для параметра name
базового класса.