为什么我们称使用 "new" 关键字创建的内存为 "dynamic memory" 因为它也是固定内存
Why we call memory created using "new" keyword "dynamic memory" since it is also a fixed memory
这样创建的数组 int a[5]
包含 5 个整数内存块,内存在运行时无法更改。
这样创建的数组int *ptr=new int[5]
也包含5个整数块,在这种情况下也无法在运行时增加和减少内存,因此,从这个角度来看它被称为动态内存。
口语化的术语“动态内存”来自语言定义的术语“动态存储持续时间”。见 Storage duration :
dynamic storage duration. The storage for the object is allocated and deallocated per request by using dynamic memory allocation functions. See new-expression for details on initialization of objects with this storage duration.
使用 new
或 new[]
创建并使用 delete
或 delete[]
销毁的对象具有动态存储持续时间。
它是动态的,因为生命周期在开发者想要的时候开始和结束。每隔一个存储持续时间都有关于生命周期何时开始和何时结束的严格规则。它与数组大小或调整数组大小无关。非数组对象也可以有动态存储持续时间。
考虑以下情况
#include <iostream>
int main()
{
int size;
std::cin>>size;
int array1[size]; //compile error, the size of static array must be known at compile time
int* parr=new int[size]; //ok, size of an dynamic array can be unveiled on runtime.
....
....
}
所以动态术语指的是用户可以随时he/she决定数组的大小。
这样创建的数组 int a[5]
包含 5 个整数内存块,内存在运行时无法更改。
这样创建的数组int *ptr=new int[5]
也包含5个整数块,在这种情况下也无法在运行时增加和减少内存,因此,从这个角度来看它被称为动态内存。
口语化的术语“动态内存”来自语言定义的术语“动态存储持续时间”。见 Storage duration :
dynamic storage duration. The storage for the object is allocated and deallocated per request by using dynamic memory allocation functions. See new-expression for details on initialization of objects with this storage duration.
使用 new
或 new[]
创建并使用 delete
或 delete[]
销毁的对象具有动态存储持续时间。
它是动态的,因为生命周期在开发者想要的时候开始和结束。每隔一个存储持续时间都有关于生命周期何时开始和何时结束的严格规则。它与数组大小或调整数组大小无关。非数组对象也可以有动态存储持续时间。
考虑以下情况
#include <iostream>
int main()
{
int size;
std::cin>>size;
int array1[size]; //compile error, the size of static array must be known at compile time
int* parr=new int[size]; //ok, size of an dynamic array can be unveiled on runtime.
....
....
}
所以动态术语指的是用户可以随时he/she决定数组的大小。