与数组中普通的元素分配相比,使用动态内存分配创建数组有什么好处?
答案 0 :(得分:9)
您不必事先知道数组的大小,也不必过度分配内存来解释大型数组。这使您的程序在使用内存时更有效率。
答案 1 :(得分:4)
动态创建的数组通常可以比自动创建的数组大,并且可以具有更长的生命周期。但与使用std :: vector相比,它们都有许多缺点。
答案 2 :(得分:3)
1)动态内存分配在管理对象的生命周期时可以提供很多自由。
2)阵列的大小也可以更自由地控制。
答案 3 :(得分:2)
int x[100];
是固定大小,您无法展开它。它的生命周期与创建它的环境有关,不能传递给不同的函数/方法。
int *x = new int[n]; ... delete[] x;
可以重新分配,因此它可以调整大小,并且不必在编译时知道(因此您可以询问用户需要多少个数字并创建该大小的数组)。正如@Neil Butterworth所指出的,这是在堆上创建数组并且可以更大,而静态变体在堆栈上创建数组。
std::vector
包含了很多这种神奇的重新分配代码,这可能是您应该在代码中使用的内容。
答案 4 :(得分:0)
动态分配的数组的基本优点是,您可以在运行时确定动态分配的数组的大小,并且,因为该数组位于堆而不是堆栈上,所以它可能比静态数组大。重要的是要记住,std :: vector这对你有用。你应该推出自己的数组类的时间很少。使用std :: vector,
答案 5 :(得分:0)
在分配数组时,必须在编译时给出数组的大小。在大多数情况下,无论是分配更多内存还是更少内存。
这是动态内存分配帮助你的地方,这样你实际上只能分配那些真正需要的内存块,当你完成内存管理时,就可以释放内存。
答案 6 :(得分:0)
简而言之,它可以帮助程序员创建用户所说的大小数组。