Нужно ли делать free в процедуре в к-рой для переменной вызывается malloc? Напр:
char *proca (char *a) { char *b = (char *) malloc (255);
b = "something text";
strcat(a, b);
return (a);
free(b); //вот насколько критична эта строка? }
Говорят, что жизненный цикл локальных переменных определен процедурой(методом) в которой они были объявлены и при выходе из нее память под таке переменные освобождаются автоматически...
И еще:
как насчет такой реализации:
char *proca (char *a) { char *ret = (char *) malloc (255);
ret = "text";
return ret;
}
если мы из другой функции вызовем эту всего лишь для вывода в stdout возвращаемой строки, то не будут ли 255 байт заполнены ненужными данными (если да, то как их удалить)
И еще один детский вопрос:
критично ли объявление void proca(char *a) вместо void proca(const char *a) ,если известно, что char *a - будет именно const. Т.е. будет ли большой ошибкой если я поленюсь приписать "const"?
Спасибо!