На ваш ответ уже отвечали несколько раз, но я думаю, что во всех ответах отсутствует один важный бит (который вы не просили явно): хотя вы выделили память для десяти символов, а затем перезаписали единственный указатель, на который вы ссылаетесь в этой областипамяти, вы создали утечку памяти, которую вы больше не можете исправить.Чтобы сделать это правильно, вы должны std :: strcpy () память из предварительно выделенной, предварительно инициализированной константной части памяти, где содержимое вашего строкового литерала было сохранено в 10 динамически распределенных символах.
А вот и важная часть:
Когда вы закончите работу с этими 10 символами, вы освободите их, используя delete[]
.[]
важны здесь.Все, что вы выделяете с помощью new x[]
, должно быть освобождено с delete[]
.Ни компилятор, ни среда выполнения не предупреждают вас при использовании обычного delete
, поэтому важно запомнить это правило.