当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: Boost:使用shared_ptr封装资源句柄
 

 

 ·kodojdo指南第三章    »显示摘要«
    摘要:第三章:jdo技术框架 下图描述了jdo框架各基本组件之间的关系。 jdohelper.javax.jdo.jdohelper包含了一些静态的辅助方法。这些方法用于查询持久性对象的生存期和以厂商无关的方式创建persistencemanagerfactory的实例。 persistencemanagerfactory .javax.jdo.persistencemanagerfactory是......
 ·kodojdo指南第五章    »显示摘要«
    摘要:第五章 jdo元数据 jdo要求每个持久类都必须有元数据.元数据有三个基本作用:1)标识持久类2)重载默认jdo行为3)告诉jdo持久类的内省信息 元数据是一个xml文档,下节会讨论它的dtd.无须强求自己立即明白dtd,下节我们会全面介绍它. jdo元素是元数据文档的根元素.它只有一个子元素.package.每个package元素都必须用包的全称来指定名字属性 package元素包......


Boost:使用sharedptr封装资源句柄
boost:使用shared_ptr封装资源句柄

翻译 masterlee 【程序编程相关:error LNK1103 问题

boost 2: shared_ptr wraps resource handles(by peterchen) 【推荐阅读:(C#)数值型货币的大写转换

  【扩展信息:安装FreeBSD出错之后,Window

使用boost,我们可以写出非常完美的包装gdi与其他句柄的代码,而且代码量又很少.

 

handleref class template - 2.72 kb

sample project (contains code snippets, and doxygen documentation) - 43.7 kb

1. 介绍

在windows中,对于窗口资源,能够使用如gdi句柄来很好的管理,不会造成内存泄露.本文档将要介绍如何来使用智能指针实现这个操作,并且是其更加简单化,而且消除主要的源码错误.本文档是«在你的代码中使用boost智能指针»的一个延续,在那里介绍了如何使用shared_ptr的例子(如果你不熟悉boost::shared_ptr,你可以先阅读那篇文章).

这种解决方案并不是新提出的,这里只是说用适当的库可是使其更简单.编写这篇文章的想法是来源于“我使用shared_ptr能做些什么呢?”.

 

2. 内容

·         背景将详细调查这个问题,讨论一般解决方案.

·         智能指针的营救在这里用一个例子来说明如何来帮助我们.

·         发展这种方法将利用这种思想开发一组模板库,使这种思想得到重复利用,而且允许加入新的类型.尝试以这个为开始继续编写程序.

·         利用这种方法 —— 这里介绍如何使用这种方法.

3. 背景

在win32编程中的许多资源句柄都不能够很好的适应面向对象的编程环境.下面列出几个常见的问题:

a.       是否能获得一个句柄要看是否调用了释放资源的函数.如果你使用createfont 创建了一个字体,当你不再使用它的时候,调用deleteobject来释放它,然而如果你从一个窗口中获得hfont,那么你就不需要释放它.

b.       没有一种方法告诉我们一个句柄不再使用我们应该释放它,或者告诉我们不需要管它.

c.      句柄类型很多,提供了很多delete/release函数,需要正确对应使用它们.

d.      句柄有指针用法,例如在使用拷贝构造函数与赋值函数真正创建了一个新的实际资源的引用,虽然这样做性能很好,但是在面向对象的开发中使用raii将更加复杂化.

 

如果你有一个函数返回一个句柄,那么你必须指定什么时候释放它.如果这个句柄是类成员变量,那么这件事情就会更加复杂.先看一下这段无错的代码:

class cmessage

{

  protected:

    hfont   m_font;

  public:

 

    ~cmessage();

  // ...

};

 

cmessage createmessage(cstring const & msgtext,


...   下一页
 ·kodojdo指南第七章    »显示摘要«
    摘要:第七章 persistencemanagerfactory persistencemanagerfactory 创建persistencemanager实例以供应用程序使用.它允许你配置数据连接方 式和指定所创建的persistencemanager的默认设置.你也可以通过它在编程中获知你当前厂商支持的jdo选项 .使你能使用产品的全部特性来最优化你的程序. 7.1. 获得persiste......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE