摘要:
这个条款所说的意思就是,不要把new对象并放入智能指针这个操作放入到一个别的过程之中。 例如,如果把new对象并放入智能指针放入到一个传参过程之中,可能会发生其他参数的执行在new对象并放入智能指针之间发生,如果其他参数的执行发生了异常,那么new出来的对象并没有放入智能指针,就内存泄漏了。 所以, 阅读全文
摘要:
不要对数组做typedef,会产生很多问题,尽量使用std的string和vector来代替。 new和new一个数组时,内存实际布局有区别,new数组时,会在开头记录数组长度(具体编译器有不同实现,但主流是这样的)。所以调用delete的时候也要用相同形式,否则会误把数组当作单独对象delete, 阅读全文
摘要:
就是提供一个显示访问原始资源的接口,比如.get()。尽量别用隐式转换,方便了用户,苦了dev。没那么懂的时候,就苦一下用户。 阅读全文
摘要:
问题:当拷贝一个RAII对象时会发生什么?有以下几种选择 禁止复制 如果复制一个RAII是不合理的,把拷贝构造和拷贝赋值运算符定义为delete就行了。 引用计数 某些资源的RAII对象可以被复制,但是当最后一个RAII对象不再使用时,应该销毁资源。书中用tr1::shared_ptr举例,这个东西 阅读全文