У меня есть функция foo(), которая выделяет память и возвращает ее. Является ли стандартной практикой для меня освобождать ее в конце моей основной функции?C Программирование - Return Pointer to Freed
char* foo(){
char * p;
p = malloc(sizeof(char) * 4); /* edit - thanks to msg board */
p[0] = 'a';
p[1] = 'b';
p[2] = 'c';
p[3] = '/0'; /* edit: thanks to the msg board. */
return p;
}
int main(int argc, char *argv[])
{
char * p2;
p2 = foo();
printf("%s", p2);
free(p2);
return 0;
}
Обратите внимание, что это проблема стиля: если не освобождена, она будет возвращена ОС после выхода. Наверное, лучше делать в основном, но не обязательно. –
Я всегда предпочитал освобождать его до выхода, если тело вашей основной функции позже перемещено или скопировано. Кроме того, я понимаю, что это всего лишь пример, но если вы делаете что-то подобное, вы можете посмотреть на strdup. –