Chinaunix首页 | 论坛 | 博客
  • 博客访问: 377434
  • 博文数量: 38
  • 博客积分: 256
  • 博客等级: 入伍新兵
  • 技术积分: 846
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-14 23:21
文章分类

全部博文(38)

文章存档

2015年(1)

2014年(1)

2013年(28)

2012年(8)

我的朋友

发布时间:2013-02-03 22:02:35

在上一篇文章中,我给出了一个重载New/Delete的通用设计方法。但是当我们使用它时,会发现,它还是挺麻烦的,要修改三个地方:a. 在.cxx文件中定义一个extern字符串;b. 在.hxx文件中声明这个字符串;c. 使目标类继承于模板类。 当我们设计一个lib的导出接口时,一个很重要的目标就是简化某个功.........【阅读全文】

阅读(1665) | 评论(0) | 转发(0)

发布时间:2013-01-21 23:43:32

原标题:Construction of function static variables in C++ is not thread safeHere’s a short quiz. What will the following code print:#include <iostream>using namespace std;class Foo {public: Foo(const char* s = "") { cerr << "Constructing Foo with " << s << endl; }};void .........【阅读全文】

阅读(1778) | 评论(0) | 转发(0)

发布时间:2013-01-21 22:21:45

概述:一般来说,我们不会对全局的new/delete操作符进行重载,而是对某个特定的class。这样我们不会改变软件域中,开发人员和维护人员对new和delete的理解。在这篇文章中,我将会用演绎的方式来阐述一种设计模式,用于提供功能性的复用,我们叫它“功能模式”。基本的情境是这样的:在一个软件系统中,我们可.........【阅读全文】

阅读(1738) | 评论(0) | 转发(0)

发布时间:2013-01-07 00:23:09

关于我们为什么要重载new和delete,我想看过我前一基础篇的朋友,应该都知道了。最基本的原因就是我们想控制内存分配的过程。
如果你要问更详细的条条框框,来解释重载new/delete可以做什么的话,我推荐你去读读《Effective C++》条款50。
这里我不想描述这些书本上已经有的东西,而是想记录一些我实战中的经验。重载new和delete需要注意些什么 a. 我们知道,内存分配在C中是由两个函数实现的,而在C++中是由两个操作符实现的。所以在我们重载new和delete的时候就应该遵守一定的编程规则:

不要分配一个size为0的内存,因为C++要在你分配的这块内存上执行c......【阅读全文】

阅读(1569) | 评论(0) | 转发(0)

发布时间:2012-12-29 21:10:16

最近在网上看到好多篇博文,解释new/delete的背后故事,看完之后,总感觉,这些文章的理解有点偏颇,而且并没有真正懂得new和delete。基于这样的原因,我想写一篇博文,期望可以用通俗的方法解释它们。 1. 概念 new/delete操作分为两种:普通的new/delete和placement new/delete。 a. 普通new/delete:只接受一个参数的new/delete。当然这个参数对于new就是size,对于delete就是object pointer; b. placement new/delete: 接收除了默认参数之外的参数。比如接收一个已分配好的内存,接......【阅读全文】

阅读(1588) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册