【发布时间】:2010-04-05 09:34:13
【问题描述】:
这里有两种变体。第一:
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++ 函数使用第二种变体。 第一个变体更舒服(在我看来)。但是第二个也有一些优点(你在同一个块中分配和删除内存)。
也许这是一个愚蠢的问题,但哪种变体更好,为什么?
【问题讨论】:
标签: c++ pointers memory-management