Простейший вопрос. Есть следующий код:
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;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Допустим , идет поиск наибольшего числа, и имя человека с наибольшим числом очковЕго имя должно записаться в, скажем ,тип char , string
Наверное, очень глупый вопрос, но никак не могу найти на него ответа
Что происходит в строке кода