這裏有兩個變體。首先:從函數獲取輸出動態分配數組的更好的變體?
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++函數使用第二個變體。 第一個變種更舒服(在我看來)。但第二個也有一些優點(你在同一個塊中分配和刪除內存)。
也許這是一個愚蠢的問題,但什麼變體更好,爲什麼?