首页 > 解决方案 > 数组的静态与动态内存分配

问题描述

哪个内存效率更高,为什么在运行时使用'new'关键字动态内存分配和使用以下方法声明数组的大小:

#include <iostream>

using namespace std;

int main ()
{
    int size;

    cin >> size;

    int a[size];
}

使用“新”关键字进行动态内存分配

#include <iostream>

using namespace std;

int main ()
{
    int *array {nullptr};
    
    int size;

    cin >> size;

    array = new int[size];
     
    delete [] array;
}

标签: c++pointersmemory-managementdynamic-memory-allocationmember-function-pointers

解决方案


在堆栈上分配内存要快得多(主要是通过更改堆栈指针)。而且您不必担心管理它,它会在函数退出时被释放。但是堆栈大小通常比堆大小小得多。对于小的本地对象,使用堆栈,对于大的和那些生命周期在函数范围之外的对象 - 堆。


推荐阅读