上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 世界真的很奇妙,分久必合,合久必分。计算机发展到今天,多国之间的交流日益广泛,软件本地化是重大趋势。如果减少本地化工作就是一件值得考虑的事情。软件本地化要解决的真正问题就是如何来处理不同的字符集。要知道,单字节字符是一个8位的数据来表示的。 因此,它最多能表示256个字符。 全世界那么多个国家,256个怎么够。 因此人们提出了双字节(DBCS)来解决这个问题。单字节与双字节字符集 -----多字符集当表示英文或某些符号的时候,就采用一个字节来表示,而当表示日文,中文等字符的时候,就采用两个位来表示。 可想而知,我们不可以再像操作单字节字符那样通过 pChar++;来遍历每一个字符。为此,MS 阅读全文
posted @ 2010-06-24 23:00 麒麟子MrKylin 阅读(589) 评论(1) 推荐(1) 编辑
摘要: #define toString( L )#L#define MakeString( M, L )M(L)#define $LineMakeString( toString, __LINE__ )#define Rem__FILE__ "(" $Line ") : --- 提示: "#pragma message(Rem) 阅读全文
posted @ 2010-06-24 16:14 麒麟子MrKylin 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 当使用一个WIN API函数时,它会检验参数的有效性,然后再设法去执行任务.如果传递了一个无效参数,或者是由于某种原因使程序无法正确执行,那操作系统就会返回一个值,指明该函数在某种程度上运行失败了.WINDOWS中的函数有5种返回值类型.VOID 表示这种函数执行不可能失败,或者不必关心其失不失败. WINDOWS函数很少是这种类型. 而我们平时写代码中,也应该尽量写有返回值的函数,除非你真的确定它中途不会出意外.BOOL 如果运行失败它会返回0,如果成功则是非0. 因此,可以通过检测它的返回值是0还是非0来判断一个函数有没有执行成功. 注意,请不要写出这样的代码 if( ret == TRU 阅读全文
posted @ 2010-06-24 09:13 麒麟子MrKylin 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 关于《WINDOWS核心编程》这本书,看了许多次了。有些地方看了许多遍,总的来说是全拉通了一次。但感觉收获不多。于是决定从头开始,一边看一边实践,进一步打牢自己的基础。 有些东西工作中是用不上了,所以只好自己回家练习。 不管如何,重在坚持。打算系统地过一遍WINDOWS编程的相关知识,没有一个稳固的系统的知识体系是完全不行的。打算就此开始吧。从前言开始吧。。。 不得不说,我们太依赖微软了,特别是在PC平台上做开发的朋友们。甚至许多开发出来的产品也是针对WINDOWS平台而言的,这就不得不促使我们对这个系统有一个良好的把握。其实我也不想,但无奈也是“寄人篱下”。并且,多了解了解总没有坏处吧。 反 阅读全文
posted @ 2010-06-24 00:34 麒麟子MrKylin 阅读(286) 评论(0) 推荐(0) 编辑
摘要: http://tech.163.com/digi/10/0430/08/65GM21CJ001618J7.html 阅读全文
posted @ 2010-06-23 23:50 麒麟子MrKylin 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 在微软的c/c++ 编译器中,增加了对于栈溢出进行检测的参数 “/GS”,在调试shellcode 的时候,发现vs2005 产生的code 和 vc6 产生的code 有些不同,才让我注意到这个问题。 写了这样的一个测试程序: void foo(const char * datas) { char szbuf[32]; strcpy(szbuf, datas); } 汇编的代码如下:00411F70 push ebp 00411F71 mov ebp,esp 00411F73 sub esp,0ECh 00411F79 push ebx 00411F7A push esi 00411F7B 阅读全文
posted @ 2010-05-09 15:07 麒麟子MrKylin 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 先看这样的代码1voidMyNew(int*p)2{3p=newint;4}56intmain()7{8int*p=NULL;9MyNew(p);10}开始写了一篇函数中分配内存的问题,通过说明他们产生了拷贝,而导致p不能成功分配。但并未提出事实根据,下面我们来仔细看看具体原因。我们需要弄清两点:1、main函数中的p与MyNew函数中的p是不是一样;2、如果不一样,是怎么导致了不一样的。第一点很好看,我们可以在编译器(VC环境,我用的是VS 2005)的监视窗口中跟踪p的地址。 在监视窗口中增加一个对 &p的监视,然后我们在int*p = NULL处添加一个断点。单步执行,停在MyNew函 阅读全文
posted @ 2010-05-05 09:03 麒麟子MrKylin 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序与选择排序的不同、快速排序与选择排序的结合 冒泡排序可以说是最简单的排序了。我们学习C语言循环的时候都会提到。可见这是一种浅而易懂的排序算法!但不见得这种算法就没用处。首先,他很容易理解,这样在各种教材中比较适合拿来“开门见山”。其次是他很稳定。 若明确知道即将排的数字很混乱,随机性很强,则用冒泡排序也未偿不可。 谁让他始终是O(n^2)呢。冒泡排序法代码:1voidBubbleSort(inta[],intl)2{3for(inti=0;il;++i)4{5for(intj=i+1;jl;++j)6{7if(a[j]a[i])8{9intt=a[i];10a[i]=a[j];1 阅读全文
posted @ 2010-05-04 23:59 麒麟子MrKylin 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 内存池实现有许多种,各有不同的优缺点。这里不是主要说内存池,只是觉得这个内存池中的指针用得很飘逸!template class T,int AllocSize = 50class MemPool{public: static void* operator new(size_t allocLength) { if(!mStartPotinter) { MyAlloc(); } //将当前指向空闲内存起始地址作为反回地址 unsigned char* p = mStartPotinter; //取出空闲区域前4字节的值,赋值给空闲地址 //因为前四字节中存放了下一个BLOCK 阅读全文
posted @ 2010-05-03 15:06 麒麟子MrKylin 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 只是为了能够让自己讲清一些事!大家都知道,如果想要在在C++的函数中分配内存,那么就只得使用指针的引用传递,或是二级指针如:void MyNew(int** p){ *p = new int;}void MyNew(int*& p){ p = new int;} 而通常我们在开始的学习中,都会写成 void MyNew(int* p){ p = new int;}为什么这样分配不会成功呢?原理很简单,就是形参传递时的拷贝。当p传入进MyNew的时候,函数内部会对其进行拷贝。而函数内部真正操作和分配到了内存的,就是那个考贝后的变量。偽代码如下:void MyNew(int* p){ int* t 阅读全文
posted @ 2010-04-27 22:42 麒麟子MrKylin 阅读(284) 评论(0) 推荐(0) 编辑
摘要: C++ 对象的内存布局2008-11-14 作者:陈皓 来源:csdn前言07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。不想,这篇文章成为了打开C++对象模型内存布局的一个引子,引发了大家对C++对象的更深层次的讨论。当然,我之前的文章还有很多方面没有涉及,从我个人感觉下来,在谈论虚函数表里,至少有以下这些内容没有涉及: 阅读全文
posted @ 2010-04-27 20:59 麒麟子MrKylin 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 毕业设计早就做完了,也交了。只剩下了答辩。闲着无聊,也把毕业设计拿来晒晒。其实还真没什么好晒的,毕竟不是什么高端的东西。截个图吧,意思意思!代码没啥好看的,有点乱!!! 阅读全文
posted @ 2010-04-27 09:29 麒麟子MrKylin 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 想写个软渲软器,来把自己对图形学的理解总结和检验一下。想把C++再深入一些,对于C++对象内存分布的理解,总有些欠缺。想再看看汇编。调试的时候,以及代码优化的时候好处多多。想猛啃些游戏源码,增加工作上的战斗力!!想玩玩游戏,和朋友们聊聊天,叙叙旧!哎,想干的太多。一个个来吧! 阅读全文
posted @ 2010-04-27 09:22 麒麟子MrKylin 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.flipcode.com/archives/Elements_Of_A_Game_Engine.shtmlIntroduction (简介)现在我们来说说你将如何写出一个支持华丽特性的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、动态光(dynamic lighting)、体积雾(volumetric fog)、镜面(mirrors)、入口(portals)、天空盒(skyboxes)、顶点Shader(vertex shaders)、粒子系统(particle systems)、静态网格模型(static mesh models)、动画 阅读全文
posted @ 2010-04-26 23:29 麒麟子MrKylin 阅读(413) 评论(0) 推荐(0) 编辑
摘要: /** Example 018 Splitscreen, U( a# q, @( S' f1 ]( p作者:Max Winkel." `9 ?( W; K' V1 x8 \译:小时候可靓了(履霜坚冰)2 m! C! N# J2 i6 a2 Z! Q0 U2 D4 U: U% J1 E5 N! a0 L4 q& x这个例程中我们将学习怎么使用irrlicht中的分屏(比如在赛车类游戏中)& ~$ M; ]8 f. _4 {我们将创建一个被分为4个部分的视口,有3个固定摄相机和一个用户可以控制的摄相机4 N% L! s9 [( l# n好,让们从头文件开始吧(我想没有再多说的必要了)3 C9 |* 阅读全文
posted @ 2010-04-26 09:32 麒麟子MrKylin 阅读(301) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页