游戏人生

不积跬步,无以至千里;不积小流,无以成江海。

My Links

Blog Stats

2015年5月18日 #

[原] blade中C++ singleton的实现

摘要:遵循C++03标准的, 可移植的, 更可控的singleton模板的实现. 阅读全文

posted @ 2015-05-18 19:20 crazii 阅读 (804) 评论 (2) 编辑

[百度空间] [转] 四元数(Quaternions)

摘要:dual quaternion的基础知识 阅读全文

posted @ 2015-05-18 19:05 crazii 阅读 (186) 评论 (0) 编辑

[百度空间] [原]DLL导出实例化的模板类

摘要:因为模板是在编译的时候根据模板参数实例化的,实例化之后就像一个普通的类(函数),这样才有对应的二进制代码;否则,没有模板参数,那么编译器就不知道怎么生成代码,所以生成的DLL就没有办法导出模板了.但是根据MSDN的描述,可以导出模板类的实例化后的代码(注意:这里不是指实例化模板类的一个对象),比如 ... 阅读全文

posted @ 2015-05-18 19:04 crazii 阅读 (533) 评论 (0) 编辑

[百度空间] [转]DLL地狱及其解决方案

摘要:DLL地狱及其解决方案原作者:Ivan S Zapreev译者:陆其明概要本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题。首先我会列出自己的研究结果,其中包括其它一些研究者的成果。在本文的最后,我还将给出“DLL Hell”问题的一个解决方案。介绍我曾经接受过一个任务,去解... 阅读全文

posted @ 2015-05-18 19:03 crazii 阅读 (81) 评论 (0) 编辑

[百度空间] [转+原]虚析构函数

摘要:析构函数何时该时虚拟的? 当你可能通过基类指针删除派生类对象时。 虚函数绑定到对象的类的代码,而不是指针/引用的类。如果基类有虚析构函数,delete basePtr时(译注:即基类指针),*basePtr 的对象类型的析构函数被调用,而不是该指针的类型的析构函数。这通常是一件好事情。以上摘... 阅读全文

posted @ 2015-05-18 19:02 crazii 阅读 (40) 评论 (0) 编辑

[百度空间] [转]程序员趣味读物:谈谈Unicode编码

摘要:出处:CSDN [ 2005-05-13 10:05:53 ] 作者:fmddlmyy这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在G... 阅读全文

posted @ 2015-05-18 19:01 crazii 阅读 (43) 评论 (0) 编辑

[百度空间] [转]内存屏障 - MemoryBarrier

摘要:处理器的乱序和并发执行目前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射、乱序执行等各种措施。现在普遍使用的一些超标量处理器通常能够在一个指令周期内并发执行多条指令。处理器从L1 I-Cache预取了一批指令后,就会分析找出那些互相没有关联可以并发执行的指令,然后送到... 阅读全文

posted @ 2015-05-18 19:00 crazii 阅读 (368) 评论 (0) 编辑

[百度空间] [原]再谈静态变量的初始化顺序

摘要:有一段时间我被静态变量的初始化顺序搞的焦头烂额,因为我用了singleton的懒惰初始化(lazy initialization)方式,即不需要显式创建singleton,在getsignleton的时候自动创建,并且在最后销毁对象..比如singleton使用了内存分配对象,如果这个对象先于sin... 阅读全文

posted @ 2015-05-18 18:57 crazii 阅读 (66) 评论 (0) 编辑

[百度空间] [原]CImageList支持32位透明位图

摘要:32位的位图主要是包含Alpha值(0-255)可以有半透效果的.之前用FreeImage加载 的DIB, CImageList直接绘制会有黑色背景.即便用了ILC_MASK,也创建了mask map, 这种是旧式的图标/光标透明效果,遮罩透明, 没有alpha通道和渐变,效果仍然很差.所以以前的t... 阅读全文

posted @ 2015-05-18 18:56 crazii 阅读 (539) 评论 (0) 编辑

[百度空间] [原] Empty base class optimization

摘要:最近遇到了一个诡异的问题, 数组的数据不对, 最后发现是两个类型的大小不一样导致的.123456789101112131415161718192021222324classalloc{public:void* operatornew(size_tn){...}voidoperatordelete(v... 阅读全文

posted @ 2015-05-18 18:54 crazii 阅读 (104) 评论 (0) 编辑

[百度空间] --whole-archive & --no-whole-archive

摘要:What is it?backgorund:an archive file (.a) is similar as .lib compared to Winodws. it simply contains object files. Creating an archive file is not "l... 阅读全文

posted @ 2015-05-18 18:51 crazii 阅读 (741) 评论 (0) 编辑

[百度空间] [原]android下的各种坑

摘要:一堆so文件安装不正确:apk里面都是全的, 但是安装完后/data/data/$pkg/lib下面就没有google了好长时间没有结果.最后发现是因为没库有加lib前缀(当时想了一下觉得不加更好,更合胃口)....现在加上lib前缀OK了.怀疑package manager在安装apk的时候把所有... 阅读全文

posted @ 2015-05-18 18:49 crazii 阅读 (65) 评论 (0) 编辑

[百度空间] ld: add library file reference by path & file name

摘要:By default, -l option will search libraries with lib* prefix in speficied search paths.i.e.1ld -o a.out -lA cppmain.owill search libA.so/libA.a in all... 阅读全文

posted @ 2015-05-18 18:48 crazii 阅读 (67) 评论 (0) 编辑

[百度空间] [原] 全局operator delete重载到DLL

摘要:由于很久没有搞内存管理了,很多细节都忘记了今天项目要用到operatordelete重载到DLL,发现了问题,网上搜索以后,再对比以前写的代码,发现了问题:原来MSVC默认的operatornew(size_t)和operatordelete(void*)虽然可以重载,但是不能封装到DLL中,编译会... 阅读全文

posted @ 2015-05-18 18:46 crazii 阅读 (101) 评论 (0) 编辑

[百度空间] [原]基于内存生命周期的内存管理

摘要:如果根据声明周期划分的话,内存可以大至划分为3类1.静态内存2.临时内存3.普通内存静态内存的特点是,程序开始(通常是初始化期间)分配的,而后就不会释放,直到程序结束,典型的如singleton,相信还有很多类,其实例只会被分配一次,而且理论上,生存期是贯穿整个程序的.临时内存的特点通常如下:voi... 阅读全文

posted @ 2015-05-18 18:45 crazii 阅读 (32) 评论 (0) 编辑

[百度空间] [原]MFC杂乱笔记

摘要:1.创建动态菜单假如ID是动态分配的,那么重载virtual BOOLOnCmdMsg(UINT,int,void*,AFX_CMDHANDLERINFO*);据MSDN不详细解释,当第二个参数值为CN_COMMAND时,是执行Command的消息,不过要看最后一个参数,如果最后一个参数为空,则为真... 阅读全文

posted @ 2015-05-18 18:44 crazii 阅读 (66) 评论 (0) 编辑

[百度空间] [note] pointer to member is a POD type

摘要:C++03 3.9-10:1Arithmetic types (3.9.1), enumeration types, pointer types, and pointer to member types (3.9.2), and cv-qualified versions of these type... 阅读全文

posted @ 2015-05-18 18:43 crazii 阅读 (64) 评论 (0) 编辑

[百度空间] [原]跨平台编程注意事项(三): window 到 android 的 移植

摘要:大的问题先记录一下跨平台时需要注意的大方向.1.OS和CPU同一个操作系统, CPU也可能是不一样的, 比如windows也有基于arm CPU的版本,而android目前有x86,arm,mips几种.即便是同一种CPU架构系列, 细节特性也不一样.所以目前个人准备了3个宏开关来判断目标平台. O... 阅读全文

posted @ 2015-05-18 18:41 crazii 阅读 (978) 评论 (0) 编辑

[百度空间] [原]跨平台编程注意事项(二): windows下 x86到x64的移植

摘要:之前转的:将程序移植到64位Windows还有自己乱写的一篇:跨平台编程注意事项(一)之前对于x64平台的移植都是纸上谈兵,算是前期准备工作,但起码在写代码时,已经非常注意了.所以现在移植起来相对很顺利.昨天用了一天时间把自己代码添加了x64支持.贴一下遇到的问题,就作为注意事项吧,以下文字来自我的... 阅读全文

posted @ 2015-05-18 18:40 crazii 阅读 (407) 评论 (0) 编辑

[百度空间] [原]跨平台编程注意事项(一)

摘要:好久没有写东西了,先写一点,以后再扩充.1.使用平台编译器预定义的宏.比如在windows下,有这样一个宏WIN32.或者_WIN32.linux下有__linux__等等.比如OGRE的OgrePlatform.h中的定义:#if defined( __WIN32__ ) || defined( ... 阅读全文

posted @ 2015-05-18 18:38 crazii 阅读 (648) 评论 (0) 编辑