4.3 动态内存分配

    除在前面介绍过的将指针初始化为变量的地址,或用变量的地址来对指针变量进行赋值以外,C++允许程序员利用专门的运算符“创建(new)”和“撤销(delete)”对内存进行动态分配,这样便可在程序运行时申请一块未命名的内存用来存储变量或者更为复杂的数据结构,并把该内存的首地址记录下来,以备将来访问。

    4.3.1 使用new动态分配内存

    new是一个单目运算符,操作数为一个类型名,返回值为指向操作数类型的指针。为一个变量分配动态的内存的基本格式如下所示。


    类型名*指针变量名=new类型名;其中的“new类型名”是通知编译器所开辟的内存是用来存储什么类型的值,new操作符能根据这个类型名自动计算要分配的存储空间的大小。 int*pNum=new int;

    举例来说,上述代码会在运行时为一个int型数值分配内存,声明了指向int型的指针pNum,并用动态申请内存的首地址为pNum同时将其进行初始化,因此,用指针pNum可访问这块内存区域。

    申请内存的同时可对该区域进行初始化,对基本的变量类型,下列语句是合法的。


    int*pNum=new int(8);

    动态申请了大小为int型的内存,将这块区域初始化为8,把该区域的首地址赋值给pNum,这种用法不只局限于基本的数据类型。