为数组动态分配内存是很简单的。假定已经把pstring声明为“指向char”类型,就可以使用下面的语句为char类型的数组分配自由存储区中的内存空间
pstring= new char[20];
为包含20个字符的char数组分配了内存空间,并把它的地址存储在pstring中。要删除刚才在自由存储区中创建的数组,必须使用delete运算符:
delete [] pstring;
这里的方括号非常重要,它表示要删除的是一个数组。从自由存储区中删除数组时,应该总是包含方括号,否则结果就是不可预料的。另外,这里不能指定维数,只写上[]就可以了。
delete确保该内存可以再以后由另一个变量使用。如果没有使用delete,后来又在指针pstring中存储了另一个地址,就不能释放原来的内存空间,也不能使用它包含的变量,因为不能再访问该地址了。
delete运算符释放了内存,但没有改变指针,指针所表示的内存地址的值没有变,但该内存现在已经自由了,可以立即分配给其他实体,例如另外一个程序。为了避免使用包含垃圾地址的指针,除非要重新给它赋值或它已超出作用域,否则就应在释放内存时重新设置该指针。
pstring=0;