C++
文章平均质量分 76
xushiweizh
这个作者很懒,什么都没留下…
展开
-
vc++ 6.0标准库string类的bug
vc++ 6.0标准库string类的bug许式伟2006-12-23 basic_string类的用途basic_string并不象它的名字那样,只可能是一个字符串。有时候,它不那么象字符串。例如:typedef std::basic_stringdouble> DoubleArray;此时,basic_string是一个double类型的动态数组。你可能说,为什原创 2006-12-23 20:47:00 · 3541 阅读 · 4 评论 -
CppUnit的缺陷与改进
CppUnit的缺陷与改进 许式伟2006-12-19CppUnit的缺陷上一篇我们介绍了CppUnit以及它的一些重要理念(参见《CppUnit与单元测试》)。然而在使用CppUnit的过程中,我还是遇到了一些不如意的地方。这里,我们就要讨论下我看到的CppUnit存在的一些不足,以及我在WINX中对它作出的改进。 CppUnit提供了自动化、安全可控的执行环境。这是它的精华。然原创 2006-12-19 22:52:00 · 6123 阅读 · 3 评论 -
最快速度找到内存泄漏
本文已经迁移到:http://cpp.winxgui.com/cn:the-fastest-way-to-find-memory-leak最快速度找到内存泄漏许式伟2006年11月某日 内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。由于工作忙的缘故,这个系列目前未完,暂停。原创 2006-12-20 22:06:00 · 22752 阅读 · 12 评论 -
CppUnit与单元测试
CppUnit与单元测试许式伟2004年6月cppunit是什么?cppunit是一个测试程序框架。cpp指的是该测试程序用c++写的,unit取“单元”测试的意思。最初出现该测试框架是java版本的,名为junit。为什么要用cppunit?cppunit规范了单元测试的一些思想。这些思想朴素但非常重要。cppunit的测试观念主要有: 测试的结果是程序直接监测原创 2006-12-19 00:22:00 · 6125 阅读 · 2 评论 -
WINX新增(1): KMP字符串查找算法
概要KMP字符串查找(匹配)算法,我相信多数人都已经了解了,这里不在赘述。我只是提几个关键点,然后讲一下WINX中的KMP字符串查找算法的用法。 字符串匹配算法,输入有两个: 一个是模式串(pattern),一个目标文本。模式串比较小,通常std::string(或std::wstring就可以了)。而目标文本通常比较大,在多数实用的情形下,会是一个磁盘文本文件;或者内存中逻辑上的文本流,原创 2006-12-03 18:21:00 · 2762 阅读 · 5 评论 -
AutoFreeAlloc细节
我在《C++内存管理变革:最袖珍的垃圾回收器》一文中,讨论了AutoFreeAlloc这个gc allocator。为了突出我的想法,我对忽略了一些细节的介绍。下面这一篇我觉得介绍得很好,把我没有提及的一些细节也做了介绍。推荐大家看看: Winx基本类使用指南之C++标准扩展(AutoFreeAlloc)原创 2006-11-30 18:43:00 · 3746 阅读 · 0 评论 -
WINX调查:您使用什么C++开发平台?
关于WINX可视化开发工具 现在,我们决定正式启动“WINX可视化开发工具”这个项目。第一步我们将开始着手需求的整理。我们面临的第一个问题是,基于什么开发平台推出WINX可视化开发工具?欢迎大家投上一票。 请问,您平常使用什么平台进行C++开发? Visual Studio 2005 Visual Studio 2003 Visual Stud原创 2006-11-25 22:16:00 · 19481 阅读 · 118 评论 -
再论C++之垃圾回收(GC)
本文已经迁移到: http://cpp.winxgui.com/cn:garbage-collection-in-cplusplus使用智能指针(smart pointers) http://www.codeproject.com/cpp/garbage_collect.asp 原理:基于引用计数(reference count)。这种垃圾回收(gc)算法无非都是给每一原创 2006-11-24 02:04:00 · 31558 阅读 · 23 评论 -
垃圾收集机制(Garbage Collection)批判
垃圾收集机制(Garbage Collection)批判作者:未知(我很乐意与作者取得联系,并在这提供提供署名和链接)在Java版发表这篇文章,似乎有点把矛头指向Java了。其实不是,GC是所有新一代语言共有的特征,Python, Eiffel,C#,Roby等无一例外地都使用了GC机制。但既然Java中的GC最为著名,所以天塌下来自然应该抗着。这篇短文源于comp.lang.java转载 2006-11-22 22:19:00 · 5541 阅读 · 8 评论 -
内存池(MemPool)技术详解
本文已经迁移到: http://cpp.winxgui.com/cn:dive-into-memory-pool概述内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。 经典的内存池技术原创 2006-11-22 00:44:00 · 34870 阅读 · 21 评论 -
boost::pool与内存池技术
建议看这个链接的内容:http://cpp.winxgui.com/cn:mempool-example-boost-pool Pool分配是一种分配内存方法,用于快速分配同样大小的内存块, 尤其是反复分配/释放同样大小的内存块的情况。1. pool 快速分配小块内存,如果pool无法提供小块内存给用户,返回0。 Example: void转载 2006-11-21 00:38:00 · 18237 阅读 · 3 评论 -
重载new/delete要遵循的规则
条款8: 写operator new和operator delete时要遵循常规 自己重写operator new时(条款10解释了为什么有时要重写它),很重要的一点是函数提供的行为要和系统缺省的operator new一致。实际做起来也就是:要有正确的返回值;可用内存不够时要调用出错处理函数(见条款7);处理好0字节内存请求的情况。此外,还要避免不小心隐藏了标准形式的new,不过这是条款转载 2006-11-19 10:54:00 · 8294 阅读 · 1 评论 -
C++内存管理变革
本文已经迁移到: http://cpp.winxgui.com/cn:story-of-c-memory-management-innovationC++内存管理变革许式伟2005-7-16关键字: 内存管理 垃圾回收器 内存配置器 引用计数keyword: memory manage, memory recycler, allocator, reference count原创 2006-11-16 21:41:00 · 23741 阅读 · 40 评论 -
VC++ 6.0的小花招
VC++ 6.0的小花招 许式伟2006-2-18 Visual Studio系列中产品中,Visual Studio 6.0是最经典的一个版本,虽然后来有Visual Studio .NET 2003,以及2005,也确实添加了很多让我觉得激动的特性,但是从使用细节的细腻程度上来看,VS 6.0无疑是最棒的。我们一些同事甚至试图把2005的C++编译器独立的拿到Visual原创 2006-11-16 21:21:00 · 10432 阅读 · 2 评论 -
应用程序框架设计(3):RuntimeClass与序列化
SW系统的根是SObject,顾名思义是对普遍意义上的对象的抽象。其主要的支持有: 运行时刻类信息(RuntimeClass)运行时刻类信息是经典程序结构中一个极其重要的部分。MFC、VCL、OWL、TurboVision都支持运行时刻类信息。它可能也是经典Object类中唯一比较实用的东西。而同时它也是Object类最容易让人感到迷惑的地方。简单地说,运行时刻类信息主要有两个用途:原创 2006-11-09 22:22:00 · 4676 阅读 · 2 评论 -
WINX之FAQ
首先感谢CSDN, 在我刚刚在CSDN Blog落户一个月之际,就给了我一个惊喜,让我晋升为“C++专家”了。我很高兴,因为这意味着可以有更多的朋友了解WINX,关注WINX了。这几天陆陆续续有些网友问我的问题,考虑到可能其他朋友有类似的情形,我这里一并说明一下:1)我应该到哪里下载WINX?它支持哪些编译器?如何编译? 您可以到Sourceforge上下载WINX。下面是一原创 2006-11-08 01:19:00 · 8925 阅读 · 12 评论 -
WINX窗口类对象的内存管理
WINX窗口类对象的内存管理许式伟2006-12-29 为了引入WINX窗口类对象的内存管理(生命周期模型),我绕了一大圈子。实在是,内存管理太重要了,花多少口舌介绍它都不过分。我曾经见到这样一句话:"C++程序员觉得内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以一定不能自己去管理"。从某种意义上说,两者都是对的。 我在《C++内存管理原创 2007-01-11 22:11:00 · 4421 阅读 · 1 评论 -
C++回调函数(callback)与仿函数(functor)的异同
C++回调函数(callback)与仿函数(functor)的异同许式伟 (版权声明)2007-3-3回调函数(callback)与仿函数(functor)很多时候从用途上来看很相似,以致于我们经常将它们相提并论。例如:inline bool compare(int a, int b){ return a > b;} struct comparer { bool operat原创 2007-03-03 16:49:00 · 13172 阅读 · 10 评论 -
C++内存管理变革(6):通用型垃圾回收器 - ScopeAlloc
本文已经迁移到:http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc C++内存管理变革(6):通用型垃圾回收器 - ScopeAlloc许式伟2008-1-22引言在前文,我们引入了GC Allocator(具备垃圾回收能力的Allocator),并提供了一个实作:AutoFreeAlloc(详细原创 2008-01-22 18:14:00 · 8757 阅读 · 9 评论 -
欢迎使用 FreeCode for VS60/VS2005 Add-in
FreeCode是WinxGui for VS60/VS2005的可视化界面开发插件。下载:FreeCode2.zip作者:fox1996 / QWL1996参见:http://www.winxgui.cn/blog/?p=163一 安装VS60菜单 Tools->Customeze…->Add-ins and Macro Files ->Browse…选择FreeCode.dll原创 2007-09-28 11:49:00 · 3728 阅读 · 0 评论 -
Unix搭积木思想与Google Code Wiki
Google Code的Wiki版本管理是用SVN实现的,这个构思很神奇。与Unix用小程序搭积木的思想异曲同工。这远没有成为我们思考问题的习惯,但它应该成为。在Google Code上做个wiki页面,然后到source上看看,会发现上面多了wiki目录。进去后,你就就可以看到你的wiki页面源代码被放到了这里。这样做的好处是,你不只是可以在线编辑wiki页面,还可以本地用任何工具修改它。我原创 2007-09-21 18:18:00 · 3528 阅读 · 1 评论 -
从D语言看C++ Template语法
从D语言看C++ Template语法许式伟 (版权声明)2007-5-2D语言是一门新兴的语言,它试图结合C/C++性能上的高效,同时又象Python、Ruby等“现代”语言那样具备高效的生产力。CSDN曾经对其做过专题报道。我本人蛮喜欢D语言的语法,觉得当之无愧的简洁典雅。当然需要澄清的是,我不想让人误会,我不是要倡导“C/C++已死,请使用D语言”。本文也没有打算全面去讨论D语言原创 2007-05-02 21:53:00 · 11688 阅读 · 16 评论 -
WINX贡献榜:WINX代码/文档贡献者名单
WINX贡献榜:WINX代码/文档贡献者名单许式伟2007-4-27WINX是一个开源的C++界面库,致力于简化C++的界面开发过程。自2006-08-20发布第一个版本以来,获得了众多的关注。关于它的介绍,请参阅http://www.winxgui.cn/about/。WINX发展离不开广大的C++爱好者的关注,和开源志愿者的鼎力相助。以下这些朋友已经为WINX的发展作出了自己的贡献(注原创 2007-04-27 01:19:00 · 5936 阅读 · 6 评论 -
自动化(Automation)基础概念:接口描述语言(IDL)与类型库(TypeLib)
自动化(Automation)基础概念:接口描述语言(IDL)与类型库(TypeLib)许式伟 (版权声明)2007-4-26在前文,我们已经解释了: 自动化(Automation)基础概念:COM组件(Component)与接口(Interface) 自动化(Automation)基础概念:变体(Variant)与Dispatch调用(IDispatch)原创 2007-04-26 01:16:00 · 10665 阅读 · 3 评论 -
Windows程序调试系列: 使用VC++生成调试信息
Windows程序调试系列: 使用VC++生成调试信息ZhangTao,zhangtao.it@gmail.com, 译自 “Generating debug information with Visual C++”,Oleg Starodumov 出处: http://www.cnblogs.com/itrust/archive/2006/08/17/479603.aspx转载 2007-04-25 17:42:00 · 9742 阅读 · 0 评论 -
C++内存管理变革(4):boost::object_pool与gc allocator
本文已经迁移到: http://cpp.winxgui.com/cn:gc-allocator-and-boost-object-poolC++内存管理变革(4): boost::object_pool许式伟 (版权声明)2007-4-21这篇文章拖的有点久了。NeutralEvil 在3个月之前就在催促我继续写了。只是出于WinxGui完整性的考虑,我一直在刻意优先去补充其它方面的文原创 2007-04-21 20:59:00 · 11839 阅读 · 6 评论 -
自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
二次开发接口(API)与插件(Addin)许式伟 (版权声明)2007-4-20在前文,我们已经解释了: 自动化(Automation)基础概念:COM组件(Component)与接口(Interface) 自动化(Automation)基础概念:变体(Variant)与Dispatch调用(IDispatch) 而同时,我们经常也可能经常听到以原创 2007-04-20 02:10:00 · 6471 阅读 · 9 评论 -
出差北京
最近(4月5日 - 4月13日)出差北京,待的时间比较久,欢迎朋友骚扰:)我的联系方式已经给过多次了,这里不妨再重复下: GTalk/GMail - xushiweizh at gmail dot com MSN - xswzh at hotmail dot com 另外,我近2年来的研究方向是: Distributed System, Parallel Co原创 2007-04-03 09:29:00 · 3138 阅读 · 2 评论 -
自动化(Automation)基础概念:变体(Variant)与Dispatch调用(IDispatch)
变体(Variant)与Dispatch调用(IDispatch) 许式伟 (版权声明)2007-3-14在上一篇,我们解释了COM技术基础:COM组件(Component)与接口(Interface)。这里我们聊聊COM技术中的经常会遇到的两个概念:变体(Variant)和IDispatch接口。变体(Variant)Variant类型理论上可以存放任何类型的数据,这也是中文原创 2007-03-14 16:35:00 · 6169 阅读 · 1 评论 -
从VC++到GCC移植:谈两者的语法差异
从VC++到GCC移植:谈两者的语法差异许式伟 (版权声明)2007-1-28类型引用template class T>class Foo{ typedef T::SomeType SomeType;};这段代码在VC++中一点问题也没有,但是GCC并不允许,因为它不知道T::SomeType是什么。你需要改为:template class T>class原创 2007-01-28 23:43:00 · 8104 阅读 · 18 评论 -
WINX的STD_NEW与MFC共存问题
本文已经迁移到:http://cpp.winxgui.com/cn:std-new-conflict-with-mfcWINX的STD_NEW与MFC共存问题许式伟 (版权声明)2007-3-8事由WINX的 AutoFreeAlloc 受到了广泛的关注,很多读者反应这对他们很受启发。昨天有读者反馈了 STD_NEW 与 MFC 不能共存的问题,我在这里想谈一下这个问题。原原创 2007-03-08 11:20:00 · 4090 阅读 · 2 评论 -
排序算法:qsort vs std::sort
你应该忘记C库的qsort,而使用C++的std::sort。尽管两者都是采用快速排序算法。由于C++独特的模板技术,加上仿函数(functor)的存在,使得排序算法在C++语言中,获得了无可比拟的性能优势。这种优势是C语言,更别说其他如Java、C#语言所可以比拟的。虽然,Java、C#也存在模板,但是他们的模板技术实现方案无法带来性能上的好处。原创 2007-03-05 14:32:00 · 4678 阅读 · 4 评论 -
自动化(Automation)基础概念:COM组件(Component)与接口(Interface)
COM组件(Component)与接口(Interface)许式伟 (版权声明)2007-3-12在前文,我预告了我将开始介绍WINX对自动化(Automation)的支持。首先我打算解释一下自动化(Automation)相关的概念。我们会分为3个篇幅介绍: COM基础:COM组件(Component)与接口(Interface) 变体(Variant)与ID原创 2007-03-12 15:26:00 · 8135 阅读 · 5 评论 -
winx移植手记:支持dev-c++, mingw32
winx移植手记:支持dev-c++, mingw32许式伟2007-1-14 移植winx到gcc编译器,确实比移植到Visual C++ 2003辛苦一些,花了我整整一天时间,还只是移植了winx中的一个子库:stdext(C++标准扩展部分)。感兴趣可到这里下载。因为仍然是windows平台开发,我选择的是Dev-C++, mingw32。之所以是Dev-C++作为开发平台,是依原创 2007-01-15 02:17:00 · 6805 阅读 · 23 评论 -
WINX发布新版本,支持Visual C++ .NET 2003
WINX发布新版本: winx-1.01.05,开始支持Visual Studio .NET 2003。至此,WINX已经测试通过的编译器有: Visual C++ 6.0 Visual C++ 2003 Visual C++ 2005 更详细的内容,参考这里。感谢owen朋友。原创 2007-01-13 01:06:00 · 3428 阅读 · 0 评论 -
深入浅出C++之private/public/protected
下面这个问题摘自论坛的一个帖子:已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示: class P : protected O {…}; class Q : public O {…};关于方法F1的描述中正确的是___(34)___;关于方法F2韵描述中正确的是___(35)___;关于方法F3的描述中正确原创 2006-11-06 22:56:00 · 6311 阅读 · 3 评论