摘要: 9、正如定位new(placement new expression)表达式是使用allocator类的construct成员的低级选择,可以使用析构函数的显式调用作为调用destroy函数的低级选择。示例代码 for (T *p = first_free; p != elements; /*empty*/) alloc.destroy(--p); //上式表达与下式表达等价 p->~T();10、显式调用析构函数是清除对象本身,并没有释放对象所占的内存;调用operator delete函数不会运行析构函数,它只释放指定的内存。11、类通过定义自己的名为operator new和ope 阅读全文
posted @ 2011-05-22 22:25 浪里飞 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 1、C++的内存分配是一种类型操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象。new表达式自动运行合适的构造函数来初始化动态分配的类类型对象。2、在每种情况下(预先分配内存以保存用户级(user-level objects)对象或者保存类的内部数据)都需要将内存分配与对象构造分离开。3、对未构造的内存中的对象进行赋值而不是初始化,其行为是未定义的。对许多类而言,这样做引起运行时崩溃。4、C++提供下面两种方法分配和释放未构造的原始内存。1)allocator 类,它提供可感知类型(type-aware)的内存分配。这个类支持一个抽象接口,以分配内存并随后使用该内存保存对 阅读全文
posted @ 2011-05-22 20:07 浪里飞 阅读(816) 评论(0) 推荐(0) 编辑