设为首页 加入收藏

TOP

9.2.10 存储方案和动态分配(2)
2013-10-07 15:43:13 来源: 作者: 【 】 浏览:90
Tags:9.2.10 存储 方案 动态 分配

9.2.10  存储方案和动态分配(2)

3.new:运算符、函数和替换函数

运算符new和new []分别调用如下函数:

 

这些函数被称为分配函数(alloction function),它们位于全局名称空间中。同样,也有由delete和delete []调用的释放函数(deallocation function):

 

它们使用第11章将讨论的运算符重载语法。std::size_t是一个typedef,对应于合适的整型。对于下面这样的基本语句:

 
将被转换为下面这样:
 
而下面的语句:
 
将被转换为下面这样:
 

正如您知道的,使用运算符new的语句也可包含初始值,因此,使用new运算符时,可能不仅仅是调用new()函数。

同样,下面的语句:

 

将转换为如下函数调用:

 

有趣的是,C++(www.cppentry.com)将这些函数称为可替换的(replaceable)。这意味着如果您有足够的知识和意愿,可为new和delete提供替换函数,并根据需要对其进行定制。例如,可定义作用域为类的替换函数,并对其进行定制,以满足该类的内存分配需求。在代码中,仍将使用new运算符,但它将调用您定义的new()函数。

4.定位new运算符

通常,new负责在堆(heap)中找到一个足以能够满足要求的内存块。new运算符还有另一种变体,被称为定位(placement)new运算符,它让您能够指定要使用的位置。程序员可能使用这种特性来设置其内存管理规程、处理需要通过特定地址进行访问的硬件或在特定位置创建对象。

要使用定位new特性,首先需要包含头文件new,它提供了这种版本的new运算符的原型;然后将new运算符用于提供了所需地址的参数。除需要指定参数外,句法与常规new运算符相同。具体地说,使用定位new运算符时,变量后面可以有方括号,也可以没有。下面的代码段演示了new运算符的4种用法:

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇9.2.10 存储方案和动态分配(3) 下一篇9.2.10 存储方案和动态分配(1)

评论

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

·如何利用Python做数 (2025-12-24 23:48:36)
·如何使用python进行 (2025-12-24 23:48:34)
·python 爬虫入门该怎 (2025-12-24 23:48:31)
·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)