C/C++
epluguo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于crc32实现的内存的代码校验
原理:a,crc32函数的实现b,内存校验:顾名思义,运行在内存代码通过crc32得到一个值,当第二次运行可执行文件的时候,可以把第一次保存下来的值和第二次运行的结果相比较,从而根据比较结果判断时候内存数据吧被修改。 1,crc32算法的实现部分:DWORD CRC32(BYTE* ptr,DWORD Size){ DWORDcrcTable[256]转载 2013-07-10 13:29:05 · 2020 阅读 · 0 评论 -
如何建立一个完整的游戏AI
原作者:Geoff Howland译者:akinggw转载 2014-07-29 19:13:52 · 2684 阅读 · 1 评论 -
游戏服务器:到底使用UDP还是TCP
在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面对。一般来说你会听到人们这样说:“除非你正在写一个动作类游戏,否则你就用TCP吧” 或者是 “你能够在MMO游戏中用TCP,因为魔兽世界就用的TCP!”遗憾的是,这些观点都没有反映这个问题的复杂性。背景首先,说明一下,我之前主要是用TCP进行网络编程。我曾为一个流行的在线纸牌游戏编写服务器了好几年,在高峰转载 2014-04-10 21:22:35 · 3007 阅读 · 0 评论 -
glext.h
OpenGL可以扩展,其API扩展必须得到其管理者-——OpenGL体系评审委员会(ARB)的认可。比如多纹理映射就是其中之一,因为不是OpenGL的所有实现版本都支持多纹理映射,所以它是一个可选择的扩展。在使用前,必须包含glext.h头文件,而在有些IDE里头,没有集合glext.h。我试着找了下,不知是大家用这些函数较少还是什么原因,似乎网上对其的讨论也不多。在这里就原创 2014-02-16 22:44:27 · 6133 阅读 · 2 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2014-01-16 01:26:05 · 923 阅读 · 1 评论 -
GDI 映像方式
这一Part,在几年前看windows程序设计时一直不怎么明白。今天,想开发个游戏,重新拾起这块内容,温故而知新。以下内容参考网上、书上结合自己的理解挖掘而成。默认情况下,程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。我们可以用映像方式来改变它。映像方式CDC::SetMapMode virtual intSetMapMode(原创 2014-01-07 19:48:27 · 1558 阅读 · 0 评论 -
ADO在C++中的使用
最近程序中用到读写数据库,看了些例子,查了番MSDN,下面把详细步骤写出来,以备忘,或与同行共勉。读写数据库的技术很多,现在多用ADO。ADO以COM方式提供,所以它的很多行为遵循COM规范。首先,要引入ADO的COM文件,它的位置一般在"C:/Program Files/Common Files/System/ado/msado15.dll"。1. 引入ADO打开预编译头文件St转载 2013-10-24 12:28:51 · 1522 阅读 · 1 评论 -
算法复杂性分析
算法复杂性,这个东西,以前一直搞不大懂,很是苦恼。网上的资料不是很粗浅就是看不懂。大三了,看了门算法的课,根据老师的描述以及自己查证的资料,终于对这复杂度有了一定的了解。算法复杂度主要体现在运行该算法所需要的计算机资源的多少上。计算机的资源最重要的是时间和空间(存储器)资源,所以,算法的复杂性有时间复杂度以及空间复杂度之分。这两个量集中反映了算法的效率,而从具体运行该算法的计算机中抽象原创 2013-09-25 13:07:33 · 4226 阅读 · 0 评论 -
C++中四种cast类型强制转换方式
强制转换的类型指定了在expression上执行某种特定类型的转换。命名的强制类型转换符号的一般形式如下:cast-name(expression);其中cast-name为static_cast、dynamic_cast、const_cast和reinterpret_cast之一,type-id为需要转换的目标类型,而expression是被强制转换的值。原创 2013-10-03 11:33:20 · 8649 阅读 · 0 评论 -
图 - 每对顶点间最短路径----Floyd算法
对于一个各边权值均大于零的有向图,对每一对顶点,求出vi与vj之间的最短路径和最短路径长度。以下代码包含有向图的建立,Floyd算法的实现以及输出最短路径和最短路径长度。代码说明几点:1、A[][]数组初始化为各顶点间的原本距离,最后存储各顶点间的最短距离。2、path[][]数组保存最短路径,与当前迭代的次数有关。初始化都为-1,表示没有中间顶点。在求A[i][j原创 2013-09-02 18:29:45 · 1936 阅读 · 0 评论 -
Windows驱动程序框架
在配置好想对应的开发环境后,我们就可以开发驱动程序了。注:下面的主要以NT式驱动为例,部分涉及到WDM驱动的差别会有特别说明。在Console控制台下,我们的有一个入口函数main;在Windows图形界面平台下,有另外一个入口函数Winmain。我们只要在这入口函数里面调用其他相关的函数,程序就会按照我们的意愿跑起来了。在我们用IDE开发的时候,也许你不会发现这些细微之处是如何配置出原创 2013-08-09 21:58:22 · 1334 阅读 · 0 评论 -
CRC原理及实现
CRC(Cyclic RedundancyCodes)中文名是循环冗余码,由于计算简单等,被广泛用于数据校验,具有很强的检错能力。最常见的有网络传输中信息的校验,但同样的道理,我们也可以将其应用到软件中,如:winrar对文件的校验。另外,我们还可以将它应用到软件上面来保护软件被恶意修改,还可以用在内存动态校验上面。用途多多,变通方式也不一,但基本原理都是这个。CRC算法的是以GF(2原创 2013-08-20 14:35:44 · 3030 阅读 · 5 评论 -
VC6.0 + WDK 7600.16385.1 开发环境配置
之前用着VisualDDK挺爽的,可以直接用VS来调试,但是只支持Visual2005以上版本,另外对VS2008中文旗舰版的支持不好,被迫无奈我下了个VS2010。无可置疑Visual DDK用起来真的挺爽的,起码能省去配置环境的时间。另外,搭配Visual KD双机调试,速度比用传统的串口调试速度快多了。今天,想用VC6.0来写下驱动代码,VC6.0毕竟小巧灵活点,但奈何Visua原创 2013-08-01 13:43:56 · 3293 阅读 · 0 评论 -
VC6.0的兼容性问题解决方案
VC6是98年的产品了,但因为它的小巧而一直被众多的爱好者追随。对一些新入门的朋友是不错的选择,另外我偶尔也用它来编一些小巧的程序,或者临时打开来测试一下。VC6是比较老的一个产品了,对C++的一些支持并不是很好,对C的还算可以吧,起码我没有发现什么大问题。另外最新的C99标准铁定不能指望它能支持了。C99在VS2010也就只支持部分而已。而且在之后的版本里面,微软在编译的方面上也做过很多原创 2013-08-01 00:37:56 · 4508 阅读 · 0 评论 -
编写软件动态加载NT式驱动
NT式设备驱动程序的动态加载主要是由服务控制管理程序(Service Control Manager,即SCM)系统组件来完成的。 Windwos服务可以在系统启动时加载,用户也可以按需在服务控制平台开启或者关闭服务。程序员可以通过Windows提供的相关服务函数进行加载或者卸载该服务等。服务程序更是可以在用户还没有登录系统的时候,就载入系统并且被执行。加载NT驱原创 2013-07-24 23:12:52 · 1055 阅读 · 0 评论 -
错误代码中文查询GetLastError返回代码的含义
〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖4〗-系统无法打开文件。 〖5〗-拒绝访问。 〖6〗-句柄无效。 〖7〗-存储控制块被损坏。 〖8〗-存储空间不足,无法处理此命令。 〖9〗-存储控制块地址无效。 〖10〗-环境错误。 〖11〗-试图加载格式错误的程序。 〖12〗-访问码无效转载 2013-07-24 21:16:48 · 1671 阅读 · 0 评论 -
二叉树的一些基本运算
树型结构的用途很广,其中二叉树尤为重要。这里列出了几种基本的算法(1)遍历二叉树。(先序遍历,递归方式,采用广义表的格式输出)(2)求某节点的左、右孩子节点值(3)求二叉树的深度(递归方式)(4)求二叉树的宽度(类似层次遍历,用到队列)(5)求二叉树的节点个数(递归)(6)求二叉树叶子节点个数(递归)代码里写的很明白了,上面的括号是下面的代码实现方式的简述。原创 2013-06-29 12:18:56 · 1223 阅读 · 0 评论 -
__EMIT伪指令
__EMIT是VC内联汇编的伪指令,相当于MASM中的DB.VC里没有DD及DW之类的内联汇编指令,只有用这个_emit一个字节一个字节的填入。__asm{ ;nop __emit 0x90}原创 2013-07-11 12:49:01 · 1941 阅读 · 0 评论 -
C/C++流程与反汇编
众所周知,任何程序都可以由三种基本控制结构组成,分别是循序结构,选择结构,循环结构。这三种结构翻译成汇编语言又是怎样的呢?这里主要考虑的是debug版本。对于release版本经过各种优化后结果不一样,不作考虑。这里的编译器采用的是Visual Studio 2008顺序结构没什么悬念,这里就不提了,首先看下选择结构。选择结构,主要有两种表现方式:if{ }el原创 2014-08-15 21:13:22 · 1461 阅读 · 0 评论
分享