
C++
c++相关技巧和知识
shenweihui
这个作者很懒,什么都没留下…
展开
-
memory barrier
这里有一篇关于memory barrier的文档,文档中详细介绍了什么是memory barrier,以及memory barrier的作用。有助于我们理解为什么最初的双重检测锁定模式(Double Checked Locking Pattern)在某些CPU环境下是有问题的。文中还指出,如果要正确使用MB进行同步,那么write barrier和read barrier必须是成对出现,也就c转载 2012-11-04 16:12:58 · 1177 阅读 · 0 评论 -
为什么INT_MIN不是直接写成-2147483648
INT_MIN为什么不写成-2147483648原创 2012-05-26 17:08:42 · 18968 阅读 · 4 评论 -
两篇关于stl容器性能比较的文章
STL container BenchmarkC++ benchmark – std::vector VS std::list VS std::dequeC++ benchmark – std::vector VS std::list我们知道通常对于在序列中插入和删除频繁的操作,使用list会更快,而对于序列头尾插入频繁的操作,用deque会更快。vector对于查找来说会转载 2013-01-01 14:13:12 · 1413 阅读 · 0 评论 -
浮点数能够精确表示的整数的范围
有些脚本语言,比如awk,lua中都是使用浮点数来存储整数的,也就是说,我们在语言中使用的整数,在语言内部是使用浮点数来表示的。我们知道,浮点数的运算中通常存在着一定的误差,所以整数是否能被浮点数精确表示呢?答案是可以,不过不是所有范围的整数都可以被精确的表示。由于浮点数精度的问题,所以浮点数的分布也就呈现出非均匀分布。先简单介绍一下一个常用的浮点数在计算机中的组成,最常用的浮点数表示法是IE原创 2010-05-09 13:54:00 · 19107 阅读 · 4 评论 -
c++11 rvalue reference & perfect forwarding
简介右值引用,是c++11中为了解决大对象拷贝性能问题,以及参数传递而新加的特性。形如T&&,其中T是referenced type。Lvalue & Rvalue左值和右值在c语言中差不多可以表述为分别出现在表达式左右两侧,但是在c++中,因为引入了class,情况变得更加复杂。基本上可以总结为:左值可以运用&操作符取得地址,注意临时对象是无法取得地址的,因为很容易导致问原创 2013-05-12 19:31:02 · 2949 阅读 · 0 评论 -
c++ & Memory consistency model
c++11中一个最重要的特性就是加入了多线程的支持,并定义了c++的memory model。memory model定义了一个处理器上对内存的操作如何被其他处理观察到,The memory model, or memory consistency model, specifies the values that a shared variable read in a multit原创 2013-02-13 16:20:50 · 1853 阅读 · 0 评论 -
Standard C++ file size
#include <fstream>#include <iostream>int main(){ std::ifstream in("somefile", std::ios::binary | std::ios::in); in.seekg(0, ios:原创 2010-07-11 12:36:00 · 1513 阅读 · 0 评论 -
Marmalde中使用Packed font的渲染的问题
近期由于需要让游戏支持中文,而游戏默认的实现是用bitmap font来实现字体,而中文常用字又很多,所以打算将NGUI中packed font的实现移植到游戏中,但是渲染时出现了问题,效果如下:明显可以看到字中间的某些像素被抠掉了。问题在于CIwTexture中有一个叫chromakey的东西,如果贴图中某些像素与这个chromakey相等,那么会被当做透明像素而抠掉。这让我想起原创 2015-01-13 10:31:25 · 1113 阅读 · 0 评论 -
内存分配器的一些资料和技巧
本文讨论了一些简单的内存分配器实现技巧,还给出了一些参考资料以供学习。原创 2019-08-21 19:01:33 · 258 阅读 · 0 评论 -
Scissoring By Projection Matrix
Scissoring By API在OpenGL或者D3D中,在fragment被写入frame buffer之前,会进行per fragment的操作,OpenGL中的操作顺序如下:Scissor TestAlpha TestStecil TestDepth TestBlendDitherLogic operation要进行Scissor Test,我们可以glE原创 2012-04-02 13:22:12 · 2710 阅读 · 0 评论 -
Strict aliasing rule
c++ - What is the strict aliasing rule? - Stack OverflowUnderstanding Strict Aliasing - CellPerformanceC/C++ Strict Aliasing | Binglong's sp转载 2011-04-16 18:30:00 · 1207 阅读 · 0 评论 -
Initializer of C++ objects
New Initializer 使用new时,我们通常会这么写: 1. newT 2. newT() 3. newT(value) C++03标准中(p82), 15小节这么定义这三种new的方式 A new-expression that creates an object of type T initializes that原创 2010-01-17 10:22:00 · 1770 阅读 · 0 评论 -
Double Dispatch
Double dispatch 是为了能够通过2个对象的类型来决定调用的函数。 1: class GameObject 2: { 3: public: 4: // 需要知道rhs的类型,才能决定如何碰撞 5: virtual void Collide(GameObject& rhs) = 0; 6: }; 7:原创 2010-02-27 16:15:00 · 1930 阅读 · 0 评论 -
The Standard Librarian: Containers of Incomplete Types
http://www.drdobbs.com/cpp/184403814转载 2010-04-29 21:19:00 · 708 阅读 · 0 评论 -
c++11以及STL介绍视频
Part 1 (sequence containers)Part 2 (associative containers)Part 3 (smart pointers)Part 4 (Nurikabe solver) - see Wikipedia's article and Ste转载 2011-07-08 10:53:16 · 2490 阅读 · 0 评论 -
Issue of implementing profiling timer on some defective hardwares using QPF
<!--pre.hl {color:#330066; background-color:#ffffff; font-size:10pt; font-family:Consolas}-->在使用QueryPerformanceCounter和QueryPerformanceFrequency来实现Timer时,需要注意一个问题,就是使用QPF计转载 2010-04-17 09:55:00 · 886 阅读 · 0 评论 -
Zero a pod-struct object
本文介绍了如何以最快的方式来对pod对象进行初始化清零。借助编译器的优化功能,自动选择memset或者赋值实现。原创 2010-07-09 07:54:00 · 1434 阅读 · 0 评论 -
How to implement fiber
Introduction我们知道线程是程序执行的一个最基本的单位,任何程序的执行,都依赖于线程的执行。而线程通常是操作系统的基本组成,通常创建一个线程,比如在Win32上,用CreateThread创建一个线程,操作系统实际会创建2个对象,一个是用户态的线程,另一个是内核态的线程,而我们的代码运行在用户态线程。当线程切换时,比如调用WaitForSingleObject,或者调用Write原创 2011-06-25 05:30:00 · 3147 阅读 · 3 评论 -
Empty class and optimization
本文简单介绍Emtpy base class以及相关优化。并对boost.compressed_pair的实现进行了简单讲解。原创 2011-01-29 11:59:00 · 1713 阅读 · 0 评论 -
关于非成员运算符和成员运算符的区别
本文简单讲述运算符重载的两种形式,以及两者之间如何进行选择的部分理由。原创 2011-02-18 12:10:00 · 3622 阅读 · 1 评论 -
boost exception
本文对boost.exception库的实现进行了简单的剖析原创 2010-07-20 05:50:00 · 5435 阅读 · 0 评论 -
Alignment of structure
reference: http://netwinder.osuosl.org/users/b/brianbr/public_html/alignment.html原创 2010-02-07 08:58:00 · 749 阅读 · 0 评论