c++ - 数组的静态与动态内存分配
问题描述
哪个内存效率更高,为什么在运行时使用'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;
}
解决方案
在堆栈上分配内存要快得多(主要是通过更改堆栈指针)。而且您不必担心管理它,它会在函数退出时被释放。但是堆栈大小通常比堆大小小得多。对于小的本地对象,使用堆栈,对于大的和那些生命周期在函数范围之外的对象 - 堆。
推荐阅读
- python - 使用 labelEncoder 时输入形状错误
- python - 多个任务并从 Locust 配置文件中读取用户和孵化率
- c# - 可以在同一个项目中拥有 Entity Framework 和 Entity Framework Core 还是有异味?
- javascript - 将学生添加到颜色组的算法
- reactjs - 状态不会保持更新
- typescript - 返回值类型的 TypeScript 问题
- sql - SQL Server:转换和合并单独的日期和时间列(均为整数)
- javascript - 如何在javascript中正确实现全局变量?
- java - @JsonFormat 写入字符串,即使是字符串属性的 NUMBER 形状
- php - 使用相同 Laravel 源的多个 Docker 容器