У меня возник вопрос, на который никак не могу найти конкретный ответ.
Нa языке СИ можно копировать строки:
void strcpy(char *s, char *t)
{
while (*s++ = *t++)
;
}
При том строки, понятное дело 's' может быть короче 't', есть ли здесь подводные камни, каким образом будет выделятся память для новых элементов, понятно что я смещаю указатель, но какие ячейки памяти он будет брать.
Если работать с обычным массивом, можно сделать так,
int ar[] = {0,1,2};
// Мне ничего не мешает сослаться на элемент за приделом массива
ar[5] = 5;
// и в таком случае
printf("%d\n", ar[5]);
// Выведет значение - 5
Но поскольку я вышел за пределы массива, то, я так понимаю, взял какую-то область памяти, которая могла иметь другие значения и испортил её.
Не происходит ли тоже самое при копировании строк, в первом участке кода, если строка 's' имеет меньшую длину чем 't'?