内存基本处理工具

     STL定义五个全局函数,作用于未初始化窨上。这样的功能对于窗口的实现很有帮助,用于构造的constrcut()函数和用于析构的destroy(),另三个函数是uninitialized_copy(),是uninitialized_fill(),uninitialized_fill_n()分别对应于高导次函数copy(),fill(),fill_n() 这些都是STL,前三个低层次函数的使用应该包含<memory>
    construct()接受一个指针p和一个初值value,该函数的用途就是将初值设定到指定的空间上。C++的placement new运算子来完成这一任务,construct与new不同,construct是在没有初始化的内存上构造新对象,而new一经分配内存必须进行初始化
      
#include<iostream>
#include
<vector>
using namespace std;
class A
{
    
public:
        A(
int a){cout<<"A"<<endl;}
}
;
int main()
{
    A 
*a;
//    a=new A;//new分配内存后必须构造
    a=new A(1);
    vector
<A> B;//由此说明vector使用的是内存分配与对象构造相分离的技术即预分配技术
    system("pause");
    
return 0;
}

   destory()有两个版本,第一版本接受一个指针,准务将该指针所指之物析构掉。这很简单,直接调用该对象的构构函数即可。第二版本接受first和last两个迭代器,准备将两个迭代器内的所有对象都析构掉。我们不知道这个范围有多大,万一很大,而每个对象的析构函数都无关痛痒(所谓trivial destructor),那么一次次调用这些无关痛痒的函数对效率是一种伤害。首先利用value_type()获得迭代器所指对象的型别,再利用_type_trait<T>判断该型别的析构函灵敏是否无关痛痒。叵是(_true_type),则什么也不做就结束;若否(_false_type),这才以循环方式巡访整个范转,并在循环中每经历史潮流个对象就调用第一个版本的destory

posted on 2010-03-18 15:45 melanie 阅读(142) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理


<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

搜索

最新评论