首页 理论教育 std命名空间的内存管理相关模板和函数介绍

std命名空间的内存管理相关模板和函数介绍

时间:2023-10-25 理论教育 版权反馈
【摘要】:名称空间std中声明了一系列和内存管理相关的模板类、模板函数、缓冲区模板类、迭代器和算法。头文件<memory>中,模板类allocator的声明形式如下:模板类allocator的成员函数主要包括:1)pointer addressconst。值hint可能被用于改进实现过程的性能。此函数的功能是释放n个对象的内存,释放内存的起始位置由指针p决定。此函数的返回值是allocate()函数开辟内存时设置的内存大小。此函数的功能是在特定地址构造特定类型的对象,并使用特定的数值进行初始化。

std命名空间的内存管理相关模板和函数介绍

名称空间std中声明了一系列和内存管理相关的模板类、模板函数、缓冲区模板类、迭代器和算法

上述源代码包含了和内存管理相关的各种模板类和模板函数。其中allocator是模板类,运算符operator==()和operator!=()是模板函数。类raw_storage_iterator是内存管理的迭代器,模板get_temporary_buffer()函数用于返回临时内存的指针。模板函数return_temporary_buffer()是用于返回临时缓冲区指针。模板uninitialized_copy()函数用于从指定的源区域拷贝对象至未初始化的目标范围内;uninitialized_fill()是模板函数,用于根据数据类型对数据进行数值填充;uninitialized_fill_n()是模板函数,和模板函数uninitialized_fill()相比较,二者的差别仅仅在于填充数据的个数。

头文件<memory>中,模板类allocator的声明形式如下:

模板类allocator的成员函数主要包括:

1)pointer address(reference x)const。此函数的返回值为x的引用。

2)const_pointer address(const_reference x)const。此函数的返回值为x的引用。

3)pointer allocator(size_typen,allocator<void>::const_pointerhint=0)。此函数使用运算符new(size_t)。hint或者等于0,或者从之前成员函数allocate获取并没有传递给deal-locate。值hint可能被用于改进实现过程的性能。此函数的返回值是指向数组初始元素的指针,数组大小为size nsizeof(T),T为对象的类型。存储空间是可以通过调用函数new()获取,但函数调用时是不确定的,使用hint也是不确定的。如果存储空间不能够获取,函数会抛出异常bad_alloc。

4)void deallocate(pointer p,size_type n)。指针p应该是一个指针,从函数allocate()获得的。n应该等于第一个参数指针p之后的元素的截取个数。此函数的功能是释放n个对象的内存,释放内存的起始位置由指针p决定。函数delete()也可以释放指针指向的内存块,但在调用此函数时,是不确定的。(www.xing528.com)

5)size_type max_size()const throw()。此函数的返回值是allocate()函数开辟内存时设置的内存大小(即allocate()函数的第一个参数)。

6)void construct(pointer p,const_reference val)。此函数的功能是在特定地址构造特定类型的对象,并使用特定的数值进行初始化。

7)void destroy(pointerp)。此函数的返回值是((T∗)p)->~T()。

下面介绍两个全局的运算符“==”和“!=”。

运算符“==”的声明形式如下:

运算符“!=”的声明形式如下:

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

我要反馈