WinxGui Official Blog

分类“c++/stl/boost”的存档

发布ScopeAlloc

最近发布了一个比AutoFreeAlloc还好用的GC Allocator:ScopeAlloc。欢迎探讨。

参见:http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc

另外,考虑到StdExt库的通用性比WinxGui库强,我决定将其独立发布。

主页:http://cpp.winxgui.com/

评论 (2)

最近忙的事情

最近实在是忙,这里比较荒芜。忙两件事:工作,研究Erlang;业余,研究诺基亚S60的界面开发,为的是WINX可以向手机方向发展(WinCE的开发基本尝试过了,问题不大,但是WINX的头一个手机版本,我希望慎重些,尽量避免规格反复的情况)。不过S60的书还真难啃啊,不像Programming Erlang一书,读起来很舒服…

评论

Singal-Slot:一个简单实用C++ Event机制

今天 QWL1996 和我聊起C++中实现Singal-Slot的话题。我们一个共同的观念是Boost的Singal-Slot太复杂了,需要一个更简洁的方案。以下这篇文章是 duyanning 写的,内容是用C++标准语法实现一个Singal-Slot机制。我觉得他写得非常好,因此推荐给大家:

http://www.codeproject.com/cpp/simple_event.asp

评论

从D语言看C++ Template语法

D语言是一门新兴的语言,它试图结合C/C++性能上的高效,同时又象Python、Ruby等“现代”语言那样具备高效的生产力。CSDN曾经对其做过专题报道。

我本人蛮喜欢D语言的语法,觉得当之无愧的简洁典雅。当然需要澄清的是,我不想让人误会,我不是要倡导“C/C++已死,请使用D语言”。本文也没有打算全面去讨论D语言。这里我只是把目光锁定在D语言的Template语法上。 阅读这篇文章的其余部分 »

评论

Windows程序调试系列: DIA SDK

Windows程序调试系列: 使用VC++生成调试信息介绍了各种调试信息文件。但是最具有实用意义的pdb格式不明,只能通过DIA(Debug Information Access) SDK来进行访问。

Microsoft Visual Studio 2005 直接带有DIA SDK,位于 $(VSROOT)\DIA SDK 下。其中这里 $(VSROOT) 指 Microsoft Visual Studio 2005 的根目录。从其提供的idl看,功能还是比较完整。另外,DIA SDK还提供一个Samples:DIA2Dump,该程序本身已经是一个较为实用的程序。

评论

Windows程序调试系列: 使用VC++生成调试信息

当我们使用调试器来调试程序时,我们希望能够单步调试到源代码中,在代码中设置断点,观察变量的值(包括用户自定义的复杂类型的值)。但是可执行文件只含有原始的字节数据——机器指令和操作系统执行程序时所使用的头信息和表信息。操作系统加载并运行可执行文件后,它根据不同的需求使用不同片段的内存(栈、堆)存放数据,其中的存放的依然是原始的字节数据。那么,调试器如何知道当前CPU指令对应哪一行代码?如何知道堆栈中的地址对应哪一个函数的局部变量?答案是“调试信息”,调试信息是高级编程语言和运行程序的原始字节数据之间的桥梁。

网上看到的一篇关于调试信息方面的好文,是金子就应该发光,不能让它淹没了。:) 

详细内容点击这里: 使用VC++生成调试信息

评论

内存管理专题(Memory Management)

评论

C++内存管理变革(4):boost::object_pool与gc allocator

本文已经迁移至:http://cpp.winxgui.com/cn:gc-allocator-and-boost-object-pool

这篇文章拖的有点久了。NeutralEvil 在3个月之前就在催促我继续写了。只是出于WinxGui完整性的考虑,我一直在刻意优先去补充其它方面的文章,而不是让人去误会WinxGui是一个内存管理库了。:)

言归正传。我们在内存池(MemPool)技术详解已经介绍了boost::pool组件。从内存管理观念的变革来看,这是是一个传统的MemPool组件,尽管也有一定的改进(但只是性能上的改进)。但boost::object_pool不同,它与我在C++内存管理变革强调的观念非常吻合。可以认为,boost::object_pool是一种不通用的gc allocator组件。 阅读这篇文章的其余部分 »

评论 (1)

C++的填充(padding)与对齐(align)

你是否对 #pragma pack(xxx) 这样的语句的含义感到困惑?

你是否对 sizeof(SomeClass) 的结果百思不解?

你是否遇到了某个类成员变量在调用前是一个值,但是进入某个函数调用时,莫明其妙地变成了另一个值,但是看起来并没有任何地方对它作出修改?

如果你有这些疑问,欢迎阅读 C++的填充(padding)与对齐(align) 一文。

评论

排序算法:qsort vs std::sort

你应该忘记C库的qsort,而使用C++的std::sort。尽管两者都是采用快速排序算法。

由于C++独特的模板技术,加上仿函数(functor)的存在,使得排序算法在C++语言中,获得了无可比拟的性能优势。这种优势是C语言,更别说其他如Java、C#语言所可以比拟的。虽然,Java、C#也存在模板,但是他们的模板技术实现方案无法带来性能上的好处。

评论 (2)

下一页 »