这个类指针为什么可以多次释放指针

这种在程序运行过程中申请和释放的存储单元也称为堆对象申请和释放过程过程一般称为建立和删除。

运算符new的功能是动态分配内存或者称为动态创建堆对象,语法形式为:

new 类型名T(初值列表);//用于申请分配存放T类型数据的内存空间并使用初值列表中给出的值进行初始化。

如果建立的对象是一个基本类型变量初始化过程就是赋值,如:

动态分配了用于存放int类型数据的内存空间并将初值2存入该空间中,然后将首地址赋给指针point

洳果建立的对象时某一个类的实例对象,就是要根据实际情况调用该类的构造函数

运算符delete用来删除由new建立的对象,释放指针所指向的内存空间格式为:

如果删除的是对象,该对象的析构函数将被调用对于用new建立的对象,只能使用delete进行一次删除操作如果对同一内存空間多次使用delete进行删除将会导致运行错误。

使用运算符new也可以创建数组类型的对象这时,需要给出数组的结构说明用new运算符动态创建一維数组的语法形式为:

new 类型名T{下标表达式}

其中下标表达式之处数组元素的个数,动态为数组分配内存时不能指定数组元素的初值注意,洳果是用new建立的数组用delete删除时在指针名前面要加"[]",如

利用动态内存分配操作实现了数组的动态创建使得数组元素的个数可以根据运行時的需要而确定。但是建立和删除数组的过程使得程序略显繁琐更好的方法是将数组的建立和删除过程封装起来,形成一个动态数组类

在main函数中,只是建立一个ArrayOfPoints类的对象对象的初始化参数number指定了数组元素的个数,创建和删除对象数组的过程都由ArrayOfPoints类的构造函数和析构函數完成

用new操作也可以创建多维数组,形式如下:

会产生错误因为这里new操作产生的是指向一个25x10的二维float类型数组的指针。应该改为:

2、动態内存分配与释放函数

参数:size是欲分配的字节数

返回值:成功则返回void型智者;失败,则返回空指针

参数:memblock是指针,指向需要释放的内存

我要回帖

更多关于 多次释放指针 的文章

 

随机推荐