首页 理论教育 C++教程:new和delete动态内存分配

C++教程:new和delete动态内存分配

时间:2023-08-20 理论教育 版权反馈
【摘要】:为了更好地支持对象的内存管理,C++引入了new和delete两个操作符。动手写6.3.2动手写6.3.2展示了new和delete操作符的使用。运行结果如图6.3.2所示:图6.3.2new和delete的用法从本示例中可以发现,new和delete在总体上还是与malloc()和free()类似的,由于new与类型相关,因此写法上还会更简洁一些。第一组new/delete的语法相对来说比较直观。

C++教程:new和delete动态内存分配

malloc()和free()函数在C语言中就存在了,C++只是继承了它们。为了更好地支持对象的内存管理,C++引入了new和delete两个操作符。

动手写6.3.2

动手写6.3.2展示了new和delete操作符的使用。运行结果如图6.3.2所示:(www.xing528.com)

图6.3.2 new和delete的用法

从本示例中可以发现,new和delete在总体上还是与malloc()和free()类似的,由于new与类型相关,因此写法上还会更简洁一些。在本示例中,我们使用了两组new/delete对,第一个new分配了一个初始值为3的整数(这里用到了类似于构造函数的初始化方法,我们在后面面向对象的章节中会介绍),这个语句也可以写成“int *numPtr = new int;”,这样写的话整型就只有一个未知的初值。这是因为在分配了内存却没有赋值的情况下,该内存段中可能还保留着上一次分配后存储的某个值。

第一组new/delete的语法相对来说比较直观。第二个new后面跟着变量类型以及元素的个数,这样的语法类似于数组的创建,而实际上也表示分配一段能放下5个int大小的内存。在这里我们不需要像使用malloc()那样指定以字节为单位的内存大小,这样也使得程序更具可读性。对于delete来说,如果我们用new分配了数组,那么就需要在delete和指针名之间加上一对方括号([])以表示释放数个指针类型大小的空间,不然我们只会像delete numPtr那样删除一个元素,这也是new/delete与malloc()/free()的一个重要区别。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈