Вот два варианта. Во-первых:
int n = 42;
int* some_function(int* input)
{
int* result = new int[n];
// some code
return result;
}
int main()
{
int* input = new int[n];
int* output = some_function(input);
delete[] input;
delete[] output;
return 0;
}
Здесь функция возвращает память, выделенную внутри функции.
Второй вариант:
int n = 42;
void some_function(int* input, int* output)
{
// some code
}
int main()
{
int* input = new int[n];
int* output = new int[n];
some_function(input, output);
delete[] input;
delete[] output;
return 0;
}
Здесь память выделяется вне функции.
Теперь я использую первый вариант. Но я знаю, что многие встроенные функции c ++ используют второй вариант.
Первый вариант более удобный (на мой взгляд). Но у второго также есть некоторые преимущества (вы выделяете и удаляете память в одном блоке).
Может быть, это глупый вопрос, но какой вариант лучше и почему?