Effective C++ 笔记三 资源管理】的更多相关文章

条款13:以对象管理资源 许多资源被动态分配于heap内而后被用于单一区块或函数内.它们应该在控制流离开那个区块或函数时被释放.标准程序库提供的auto_ptr正是针对这种形式而设计的特制产品.auto_ptr是个类指针对象,也就是智能指针,其析构函数自动对其所指对象调用delete. 以对象管理资源的两个想法:获得资源后立刻放进管理对象内:管理对象运用析构函数确保资源被释放. 若通过copy构造函数或copy assignment操作符复制它们,它们会变成null,而复制所得的指针将取得资源的…
参考:http://www.cnblogs.com/ronny/p/3745098.html 资源:动态分配的内存.文件描述器.互斥锁.图形界面中的字型与笔刷.数据库连接以及网络sockets等,       无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统.       条款13:以对象管理资源 当我们向系统申请资源后,一定要记得释放,不然就容易发生内存泄漏,但是意识到这样一件事并不是很容易 解决方法是我们把指针放在一个资源管理的类里,让类对象在生命结束的时候,会自动调用析构函数,…
资源:动态分配的内存.文件描述器.互斥锁.图形界面中的字型与笔刷.数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统. 条款13:以对象管理资源 当我们向系统申请资源后,一定要记得释放,不然就容易发生内存泄漏.但是意识到这样一件事并不是很容易,比如我们是通过一个函数来动态分配内存并返回一个指针. Investment* ceateInvestment();// 返回指针,指向动态分配对象 void f() { Investment* pInv = c…
条款13:以对象管理资源 资源包括:动态分配内存.文件描述符.网络socket.互斥锁.数据库连接 把资源放进对象内,可以依赖c++的"析构函数自动调用机制"确保资源被释放智能指针: 是一个"类指针"对象,引用计数型指针,当引用对象数为0时,自动删除该资源 std::shared_ptr<Class> pClass(new Class); 每一笔资源都在获得的同时立刻被放进管理对象中 条款14:在资源管理类小心copy行为 RAII:资源获取即初始化,资…
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 通过私有构造器强化不可实例化的能力 第5条 避免创建不必要的对象 第6条 消除过期的对象引用 第7条 避免使用终结方法 第1条 考虑用静态工厂方法代替构造器 对于类而言, 最常用的获取实例的方法就是提供一个公有的构造器, 还有一种方法, 就是提供一个公有的静态工厂方法(static factory…
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符串长度简单; 杜绝缓冲区溢出; 减少修改字符串长度时所需的内存重分配次数; 二进制安全;兼容部分C字符串函数; 1.2.链表:使用listNode与list来实现 listNode其属性有 struct listNode *prev:前一个节点,struct listNode *next:后一个节点…
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  …
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX <CMake实践>笔记三:构建静态库与动态库 及 如何使用外部共享库和头文件 五.静态库与动态库构建 读者云,太能罗唆了,一个Hello World就折腾了两个大节.OK,从本节开始,我们不再折腾Hello World了,我们来折腾Hello World的共享库. 本节的任务: 1.建立一个静态库和动…
第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notificationsService',function(notificationsArchive){ var MAX_LEN = 10; var notifications = []; return { push:function (notification) { var notificationToA…
笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像argv那样 创建脚本小程序 基础的函数用法: #-*- coding:utf-8 -*- def print_two(*args): arg1,arg2=args print "arg1:%s arg2:%s" %(arg1,arg2) def print_two_again(arg1,arg…