Простейший вопрос. Есть следующий код:
char* name = new char[10];
name = "Name\0";
delete[] name;
Простейший пример, который вроде бы должен работать. Однако программа просто падает без сообщений об ошибках. Отладчик после попытки выполнения последней строчки выдает следующее:
Source information is missing from the debug information for this module
Что посоветуете? VS17, Win10.
Давайте разберем...
char* name = new char[10];
Выделили память, сохранили адрес в name
name = "Name\0";
Выбросили этот адрес, заменили на адрес строки "Name\0" (кстати, еще один нолик добавит компилятор - к строковому литералу) где-то в сегменте данных.
delete[] name;
Пробуем удалить память в сегменте данных, где лежит строка... Правда, ничего удивительного, что это не получается? :)
Надо строку скопировать в выделенную память.
char* name = new char[10];
strcpy(name, "Name");
delete[] name;
Ну, или - предваряя ваш вопрос -
char* name = new char[10];
strcpy_s(name, 10, "Name");
delete[] name;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости