0

如果你想要一个动态分配的数组int size,有两种方法可以在 C 中得到它:

int* array = new int [size]; //method 1
int* array2 = malloc (sizeof(int) * size); //method 2

什么时候应该使用每种方法?

4

3 回答 3

3

如果你在C,第二个。

如果您使用 C++,请尽可能使用std::vector<int>;否则使用第一个(很少需要)。

于 2013-11-03T00:18:07.420 回答
1

另一种选择,如果数组不会那么大,则将其作为VLA分配在堆栈上:

int array[size];

当变量离开范围时,这将自动释放内存,这可能是也可能不是您想要的。如果您打算在分配它的函数之外使用该变量,请使用该malloc方式。

于 2013-11-03T02:13:21.690 回答
0

另一种选择(特别是当内存需要归零时):

int *array3 = calloc(size, sizeof array3[0]);

这可以防止溢出(必须size * sizeof array[0]手动签入)。

于 2013-11-03T01:48:39.110 回答