问题描述
哪个内存效率更高,为什么在运行时使用“new”关键字声明数组的大小进行动态内存分配与使用以下方法之间的区别:
#include <iostream>
using namespace std;
int main ()
{
int size;
cin >> size;
int a[size];
}
使用'new'关键字进行动态内存分配
#include <iostream>
using namespace std;
int main ()
{
int *array {nullptr};
int size;
cin >> size;
array = new int[size];
delete [] array;
}
解决方法
在堆栈上分配内存要快得多(主要是通过更改堆栈指针)。而且您不必担心管理它,它会在函数退出时被释放。但是堆栈大小通常比堆大小小得多。对于小的局部对象,使用栈,对于大的和生命周期在函数范围之外的那些——堆。
,两者各有利弊,取决于您想要实现的目标。当在堆栈上分配内存时,编译器会自动完成内存分配和释放,而在堆上,您必须在堆上分配和专用内存,您可以根据您的要求重新定位和调整所需的内存大小,这在堆栈上是不可能的。