1.使用new来分配内存
通用格式如下:
typeName *point_name = new typeName;
也就是为一个数据对象(可以是结构,也可以是基本类型)分配内存。
例如:
int *pn = new int;
//new int 告诉程序,需要一个存储int类型数据的内存,然后找到这样的内存并返回其地址,将地址赋值给pn,pn是被声明指向这个内存的指针。现在pn是地址,*pn是存储在那里的值。
将new方法与将变量的地址赋给指针进行比较:
int a;
int *pt= &a;
这两种情况(pn和pt),都是将一个int变量的地址赋值给指针。在第二种情况下,可以通过a来访问int,而第一种情况只能通过指针pn进行访问。
pt指向的内存的名称可以叫a,但pn指向的内存没有名称,如何称呼它呢?
我们可以说pn指向一个数据对象(这里的对象不是面向对象的对象),它指的是为数据项分配的内存块,变量也是数据对象,但pn指向的内存不是变量。
2.使用delete来释放内存
int *p = new int;
delete p;
//一定要配对使用new 和 delete
3.使用new创建动态数组
例如创建一个包含10个int元素的数组:
int *p = new int [10];
new运算符返回第一个元素的地址,改地址被赋给指针p。
当程序使用完new分配的内存块时,应使用delete释放他们。
//对于数组,应使用另一种格式的delete来释放
delete [] p;
参考《C++ primer Plus》(第六版)