Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, tasko, Вы писали:
T>>Что за особенность поведения такая?
U>U>char *p = new char(len + 1);
U>
U>у вас тут нет проблем?
Вроде нет

+1 символ для завершающего: p[len] = 0;
во втором случае возможен вариант что не будет использован вся выделенная под len+1 элемент память.
согласно описанию конструктора должно быть все хорошо
string ( const char * s );
Content is initialized to a copy of the string formed by the null-terminated character sequence (C string) pointed by s. The length of the caracter sequence is determined by the first occurrence of a null character (as determined by traits.length(s)). This version can be used to initialize a string object using a string literal constant.