Итак, я видел несколько реализаций функции strcat с memcpy. Я понимаю, что это эффективно, так как нет необходимости выделять. Но как вы сохраняете переписывание содержимого исходной строки с результирующей строкой.Путаница о strcat с memcpy
Например позволяет бери:
char *str1 = "Hello";
char *str2 = "World";
str1 = strcat(str1, str2);
Как убедиться, что в str2
не переписывается с содержанием полученного «HelloWorld» строки?
Кроме того, если строки не что иное, как массивы символов, а также массивы, предполагают, чтобы иметь фиксированный размер, то без перераспределения памяти если скопировать байты в массив, которые больше, чем массив, то это не то, что небезопасно?
Пример, который * только * вызывается UB из-за перекрытия бы, вероятно, было более важно, что я думаю * * Ваш вопрос на самом деле, если вы понимаете, как 'strcat' работы (он * никогда * выделяет память). – WhozCraig
Знаете ли вы, что такое указатель?Вы знаете, что такое String Literar? – Michi
У нас только возник вопрос о реализации 'strcat()' в [Code Review] (http://codereview.stackexchange.com/questions/149812/strcat-implementation). OP использовал 'malloc()', поэтому было некоторое обсуждение этого подхода к стандартной библиотеке. –