Цитата(Буратино @ Mar 21 2013, 18:10)

А какой смысл размещать его тут кроме как получить каменты? Конечно хочу! Кстати данный код работает и выполняет функции. Почему так нельзя сделать!?
Ну, некоторые пишут, чтобы получать лулзы, глядя как люди рвут на себе волосы
"Код работает" - это совсем не аргумент. Надо не код, который один раз сработает с данным примером, а код, который будет работать в библиотеке. Он будет вызываться миллионы раз как с короткими, так и мегабайтными строками.
Код
void str_cpy (char **a, char *b) {
*a = b;
}
Кто сказал что сорс будет существовать после вызова функции? Может быть я работаю с буфером, потом копирую строку и снова пишу в буфер. Или освобождаю буфер. Что будет с сохраненным значением?
Код
void str_cat (char **a, char *b){
int _size1 = strlen(b);
int _size2 = strlen(*a);
Функция может быть вызвана для неинициализированного дестинейшена. strlen для NULL - крэш
Код
char * tmp = NULL;
tmp = realloc(tmp, _size1 + _size2 + 2);
Зачем вызывать реаллок для NULL? Зачем двойка добавлена?
Код
memmove(tmp , *a, _size2);
memmove(tmp + _size2, b, _size1);
*a = tmp;
}
Старое значение *a перетерто. Память, на которую указывала *a - потеряна. Результирующая строка не ограничена нулем.