Определено в файле h:
char *copiedText;
Определено в файле c:
char *copyText(char *text){
if (copiedText != 0) free(copiedText);
copiedText = (char *)calloc((strlen(text) + 1) * sizeof(char), sizeof(char));
strcpy(copiedText, text);
return copiedText;
}
Во-первых, речь идет не о том, как копировать текст, я просто выбрал это в качестве примера. Мой вопрос о free () перед calloc ().
Первый вопрос, который я слышу, вы спрашиваете, почему не просто free () в подходящее время - т.е. когда copiedText больше не нужен?
Короче говоря, я делаю часть программы, и я не могу доверять пользователям моей функции должным образом free () copiedText, поэтому я хочу, чтобы в моей функции было как можно больше кода. Все, что они делают, это включают h и c file и вызывают функцию copyText.
Я знаю, что между последним вызовом copyText и завершением программы будет (небольшая) утечка памяти, но я согласен с этим компромиссом, поскольку я использую только malloc () для небольших объемов данных.
Вопрос заключается в том, освободит ли free () память, выделенную моим calloc (), при таком кодировании?