书上这一节一开始还是提供了许多有用的概念:
1.每个程序在执行时都占用一块可用的内存空间,用于存放动态分配的对象,叫做自由存储区或者堆(这里堆栈的概念就分开来了,由堆和栈两个组成)。
2.在程序中使用new和delete来实现动态分配和释放。必须显示地释放,否则内存会耗尽。
这两个概念还算有用,接下来说明了动态数组的定义方法:
int *pia = new int [10];
new操作的返回值是指向该数组第一个元素的指针,该数组没有名字,因此只能通过指针对其进行操作。
看到这里我怎么也不觉得动态体现在哪。
直到看到下列程序段才明白:
size_t n =get_size();
int *p =new int[n];
要在以往的数组类型变量定义时用int array(get_size());编译器会提示出错,getsize的值在一开始是不知道的,只有在程序运行到一定程度才会知道,所以数组的大小是不确定的,而动态数组的动态就体现在这里。这样定义的数组的存放位置也是跟一般数组的位置是不同的。