设为首页 加入收藏

TOP

2.7 new和delete操作符
2013-10-07 15:30:08 来源: 作者: 【 】 浏览:73
Tags:2.7 new delete 操作

2.7   new和delete操作符

new、new[]、delete和delete[]操作符用于动态分配和释放存储空间(例如程序运行的时候)。操作符new分配一个空间;new[]分配一个数组;delete释放由new分配的单一空间;delete[]释放由new[]分配的数组。这些操作符很像C语言中的函数malloc、calloc和free,不同的是,new、new[]、delete和delete[]是内建的操作符而不是库函数。而且,new和delete还是关键字。

new操作符用来动态地分配存储空间,其基本语法是在关键字new之后为一个数据类型。例如,

 
请求一个int的存储空间。如果new分配成功,则表达式
 
为一个指向分配的存储空间的指针。在2.8节中,我们将讲解如果分配请求失败将会如何。给定声明
 
通常使用如下方式为int_ptr分配存储空间:
 

new操作符根据请求分配的类型推断返回类型和需要分配的字节数。

new[]操作符用于动态分配一个数组。例如,

 

请求分配50个int类型单元。如果new成功地分配了该数组,则第一个单元的地址将保存到int_ptr中。

delete操作符用于释放由new分配的存储空间。如果int_ptr指向一个由new分配的单一的int单元,则我们可以这样释放它:

 
delete[]操作符用于释放由new[]分配的存储空间。如果int_ptr指向一个由new[]分配的int数组单元,则我们可以这样释放它:
 

例2-64

程序清单2-5中的程序使用动态分配存储单元方式构造了一个链表,然后逐个打印出存储单元的内容,最后遍历该链表并释放各节点。

程序清单2-5   使用动态存储空间的分配方式构造一个链表

 
 
 
new、new[]、delete和delete[]操作符应该一起使用,不要将它们与C存储管理函数malloc、calloc和free混合使用。我们建议在C++(www.cppentry.com)程序中不要使用C存储管理函数,因为这些函数与new、new[]、delete、delete[]不同,它们不能正确地使用C++(www.cppentry.com)中一些重要的技术,如构造函数和析构函数(见3.5节)。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.2.5 代码分析 下一篇2.10 常见编程错误(5)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)
·如何较为深入的理解c (2025-12-24 17:19:38)
·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)