У меня есть функция, которая задает два целых числа и возвращает строку. Прямо сейчас у меня есть это:
char* myfunc( int a, int b, int* len )
{
int retLen = ...
char* ret = malloc( retLen + 1 );
if ( len != NULL )
{
*len = retLen;
}
return ret;
}
Однако большинство функций в библиотеке C имеют тенденцию делать что-то большее:
int myfunc( char* ret, int a, int b )
{
...
return retLen;
}
Затем вы должны выделить память для заполнения функции. Это позволяет вам немного походить на выбор, где выделена строка.
В этом случае, хотя в функции требуется определенная математика, чтобы получить длину, и нет причин иметь буфер любого размера, кроме необходимого. Верхний предел размера буфера не существует (хотя это не разумно).
Что считается хорошей практикой при возвращении строки, длина которой динамически найдена с учетом входных данных?