Всем добра. Учу С++ по Шилдту. Почти в самом начале дошел до динамического выделения памяти и уже всерьез озадачился следующим. Ведь исходя из синтаксиса выделения памяти - (T *) malloc(n * sizeof(T)); то мы вроде должны написать
(char*) malloc (len * sizeof(char)); А почему то пишут (char*) malloc (len + 1); тем самым вроде выделяя память лишь для символа '10'. В общем, я в непонятках почему так пишут, ведь когда выделяют для динамического массива int то пишут (int*) malloc(n * sizeof(int);
а это пример с книги
strtype::strtype(char *ptr) {
len = strlen(ptr);
p = (char*) malloc(len + 1);
if (!p)
{
cout << "Ошибка выделения памяти" << endl;
exit;
}
strcpy(p, ptr);
}