
搜刮
tomh520
这个作者很懒,什么都没留下…
展开
-
关于回调函数(ZT)
调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。 CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程者如此轻松愉快。若评选对人类影响最大之发明,在转载 2007-08-20 09:45:00 · 569 阅读 · 0 评论 -
组合类的构造函数
//定义点point类 class point { public: point(int xx=0,int yy=0){x=xx;y=yy;} //构造函数 point(point &p); //拷贝构造函数 int getx(){return x;} //获得点的X坐标 int gety(){return y;} private: int x,y; }; point::point(point &转载 2007-09-05 15:53:00 · 1966 阅读 · 1 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do something in转载 2007-09-12 15:34:00 · 547 阅读 · 0 评论 -
用new分配对象失败时,会不会抛出异常
要知道new在Visual C++中已经重载过了!Visual C++的new会抛出异常,而C++意义上的new不会,需要自己抛出异常! MFC的异常处理可以转换为C++的异常是指大写的MFC异常处理宏可以用小写的C++异常处理替代,这与new是否抛出异常无关! VC中的new 内部调用了C++的throw关键字抛出异常!这关键在于VC实现C++的new的机制!转载 2007-10-30 15:50:00 · 1815 阅读 · 0 评论 -
Debug和Release有什么区别
1。Debug和Release有什么区别,为什么要使用Release版本! 2。怎么把Debug转成Release 刚学VC,请赐教! --------------------------------------------------------------- 转载: Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看转载 2007-10-30 16:22:00 · 591 阅读 · 0 评论 -
VC++的工程文件说明
dsw, aps, clw, plg这些文件都可以删除。只保留 H,C,CPP,DSP,RC,剩余文件去除只读属性,其余全部删除。然后打开DSP 有提示选 YES,就可以了*.dsp(DeveloperStudio Project):是VC++的工程配置文件,比如说你的工程包含哪个文件,你的编译选项是什么等等,编译的时候是按照.dsp的配置来的。*.dsw(DeveloperStudio原创 2007-11-12 11:15:00 · 887 阅读 · 0 评论 -
SEH&&try catch
C++ 中的异常处理机制是建立在 Windows 平台上的 SEH 机制之上,所以 SEH 当然可以在 C++ 程序中使用。不过“阿愚”多次强调过,我们平常一般狭义上的 SEH 都是指 try-except 和 try-finally 异常机制,而它们是给 C 语言( VC 环境)编写 windows driver 而设计的,所以 SEH 主要应该在 C 程序中被使用,而 C++ 程序则应该使用转载 2007-11-14 16:45:00 · 686 阅读 · 0 评论 -
CMap 用法
如何声明CMap许多人对Cmap的声明模式CMap感到迷惑,为什么不用CMap呢?实际上,CMap中的的数据最终会是CPair,而CPair内部是(KEY,VALUE)。因此,CMap其实存储的是KEY,而非ARG_KEY。然而,如果你查看MFC的源代码,几乎CMap所有的内部参数传递都是访问ARG_KEY和ARG_VALUE,因此,使用KEY&来代替ARG_KEY似乎是正确的,除了在这些转载 2007-12-06 16:08:00 · 5364 阅读 · 1 评论 -
CString 操作指南
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。这篇文章包括以下内容:转载 2007-12-13 16:08:00 · 514 阅读 · 0 评论 -
一个快速的内存分配池
//注释s_pCurrent = *((void **)s_pCurrent);这一句的意思是,将s_pCurrent所指的地址上存储的值赋给s_pCurrent 自身,因为“我们令每一个未使用的内存块的头部都保存一个指针,让它指向下一个未使用的内存块”,因此,实现了地址的分配。 对于现代的游戏引擎来说,为了提高性能和有效的管理内存,需要使用各种各样的内存分配模型,内存池作为一种有效的转载 2007-09-05 13:42:00 · 1082 阅读 · 0 评论 -
3D引擎场景管理
我认为对于一个3D引擎来说,最核心的部分应该算是场景组织(scene graph)了,如果这部分你都没有设计好, 那么就别指望开发一个成熟的3D引擎了。为了开发3d引擎,所以我首先就研究这方面的内容,对一个3D的场景来说,又很多的物体,最简单的组织方法就是把他们用一个List连接起来,然后在绘制没一帧的时候依次送入渲染器(render)进行处理。 这显然不是一个很有效的方法,当处理转载 2007-09-03 15:18:00 · 2311 阅读 · 0 评论 -
游戏引擎介绍1
游戏引擎介绍1原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ------------------------------------------------------------第1部分: 游戏引擎介绍, 渲染和构造3D世界介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游转载 2007-08-31 17:19:00 · 3655 阅读 · 0 评论 -
钩子(hook)
钩子程序是在内存中可以不断的在内存中拦截你要控制设备的消息并且可以对该消息进行处理过滤。钩子是WINDOWS留给我们的后门,比如你想控制键盘,在DOS时代很简单通过INT即可,而WINDOWS时代不允许我们直接操作硬件;由于WINDOWS是消息驱动,所以我们可以拦截键盘消息以达到控制键盘的目的。但是控制自己进程的消息固然很简单,要控制所有进程消息要利用钩子了。将钩子函数放在DLL中,所有的有关键盘转载 2007-08-20 09:47:00 · 679 阅读 · 0 评论 -
静态成员函数
静态成员函数有以下特点: 可以通过class::function方式调用,不用生成实例 不能访问非静态的成员变量 静态成员函数是类的一部分,而非对象的一部分。 非静态成员函数调用时还隐式的传进一个this指针,静态成员函数不传this指针。静态成员函数一般情况下只能访问静态成员变量,因为不接受隐含的this指针。 另外作为类的静态成员函数,不用声明对象,转载 2007-08-21 09:26:00 · 3248 阅读 · 0 评论 -
线程的同步
虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线转载 2007-08-21 14:00:00 · 472 阅读 · 0 评论 -
signal函数语义
signal函数语义- - unix信号signal定义#include void (*signal(int signo,void(*fun)(int)))(int)说明:1 返回值是一个 void (*)(int)类型的函数指针 2 signo是信号名 3 第二个参数为该信转载 2007-08-20 13:56:00 · 1292 阅读 · 0 评论 -
STL中的函数对象(Funciont Objects)
概要一个函数对象(Function Object或者Functor)简单的说就是能够以函数调用的形式出现的任何东西。一个普通的函数显然就是一个函数对象,函数指针也是,更一般的,一个定义了operator()的Class也是。描述基本的函数对象的概念有Generator,Unary Function(一元函数),Binary Function(二元函数):他们各自表示能以F(),F(x),F(x转载 2007-08-22 11:46:00 · 612 阅读 · 0 评论 -
epoll简介
名词解释:man epoll之后,得到如下结果:NAME epoll - I/O event notification facilitySYNOPSIS #include DESCRIPTION epoll is a variant of poll(2) that can be used either as Edge or Level转载 2007-08-28 11:41:00 · 2281 阅读 · 0 评论 -
网游服务端结构设计
.概述LoginServer GameServer服务端主体分为LoginServer和GameServer, LoginServer做帐户认证, GameServer做游戏主逻辑,中间也可以加一个CharServer啦, 做人物管理, 新建删除人物之类的, 也可以并到GameServer一起, LoginServer和CharServer都比较简单, 略过.通过LoginServer的验证后转载 2007-08-24 14:58:00 · 1563 阅读 · 1 评论 -
Quake III中不可思议的求解平方根实现方法
任何一个3D引擎都是通过其内部的数学模型和实现工具来展现它的力量与速度的,and trust John Carmack of ID software for using really good hacks. 结果,Quake III中使用了一个非常有意思的技巧来计算平方根倒数(inverse square root) 前言ID software最近发布了它的带有Gpl许可证的Quake III引擎转载 2007-08-24 15:17:00 · 2028 阅读 · 0 评论 -
MFC内存泄露误报的情况
一.环境操作系统:Windows2003 serverIDE:vs2003 二.现象新建一个dll的空项目,加入mydll.h和mydll.cpp两个文件,内容如下:// mydll.h#ifndef _MYDLL_H_#define _MYDLL_H___declspec( dllexport ) void VoidFunc();#endif转载 2007-12-11 12:02:00 · 1326 阅读 · 0 评论