В следующем фрагменте программы мы динамически выделяем память под строку переменной длины и копируем туда исходную строку
// стандартная функция strlen подсчитывает// количество символов в строкеint length = strlen(src_str);// выделить память и добавить один байт// для завершающего нулевого байтаchar* buffer = new char[length + 1];strcpy(buffer, src_str); // копирование строки
Операция new возвращает адрес выделенной памяти. Однако нет никаких гарантий, что new обязательно завершится успешно. Объем оперативной памяти ограничен, и может случиться так, что найти еще один участок свободной памяти будет невозможно. В таком случае new возвращает нулевой указатель (адрес 0). Результат new необходимо проверять:
char* newstr;newstr = new char[length];if (newstr == NULL) { // проверить результат // обработка ошибок}// память выделена успешно