如果你想要一个动态分配的数组int size
,有两种方法可以在 C 中得到它:
int* array = new int [size]; //method 1
int* array2 = malloc (sizeof(int) * size); //method 2
什么时候应该使用每种方法?
如果你想要一个动态分配的数组int size
,有两种方法可以在 C 中得到它:
int* array = new int [size]; //method 1
int* array2 = malloc (sizeof(int) * size); //method 2
什么时候应该使用每种方法?
如果你在C,第二个。
如果您使用 C++,请尽可能使用std::vector<int>
;否则使用第一个(很少需要)。
另一种选择,如果数组不会那么大,则将其作为VLA分配在堆栈上:
int array[size];
当变量离开范围时,这将自动释放内存,这可能是也可能不是您想要的。如果您打算在分配它的函数之外使用该变量,请使用该malloc
方式。
另一种选择(特别是当内存需要归零时):
int *array3 = calloc(size, sizeof array3[0]);
这可以防止溢出(必须size * sizeof array[0]
手动签入)。