关键技术实现
Francksch
专注游戏开发
展开
-
C++对象池技术剖析
对象池就是一定数量已经创建好的对象的集合。可以事先创建一批对象,放在一个链表中,以后每当程序要新的对象时,都从对象池中获取,每当程序用完该对象后,都把该对象归还给对象池。这样就少了很多的malloc/free操作,在一定程度上提高了系统的性能,尤其在动态内存分配比较频繁的程序中效果尤其明显。对象池的特征:1、对象池中有一定数量创建好的对象。2、对象池向用户提供获取对象的转载 2013-04-26 11:23:52 · 695 阅读 · 0 评论 -
深入浅出对象池(Object Pool)
在稍微大型一点的软件系统开发中,通常我们会用到内存池,对象池,线程池,连接池等各种各样的池(Pool),本文就来讲一讲对象池(Object Pool)。下面从四个方面来介绍一下对象池:1.什么是对象池(Object Pool) ?池(Poo), 与集合在某种意义上有些相似。 水池,是一定数量的水的集合;内存池,是一定数量的已经分配好的内存的集合;线程池,是一定数量的已经创建好的线程的集转载 2013-04-26 11:20:53 · 1146 阅读 · 0 评论 -
c++ viod 函数
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从转载 2013-07-08 00:14:15 · 4065 阅读 · 0 评论 -
通过STL实现带LRU的CACHE
开发互联网的server系统,难免会用一些cache机制,通常在Linux下多使用共享内存机制,把分配的内存组织成一个特定的数据结构,用来缓存后端DB的数据,加速读写。但是对一些新手而言,共享内存的使用还是有一些门槛,与此同时STL的使用却是相对容易上手,所以可以通过STL的容器组合出一个cache来。 上网搜了一下,看到已经有人做了一些类似的事情,具体可以参看http://转载 2013-07-04 22:06:51 · 902 阅读 · 0 评论 -
有哪几种情况只能用intialization list 而不能用assignment?
无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表。还有一种情况就是,类的构造函数需要调用其基类的构造函数的时候。请看下面的代码:1转载 2013-07-05 11:40:10 · 1643 阅读 · 0 评论 -
[C/C++]结构体大小的计算方法
通常情况下,由于地址对齐(alignment)的需要,结构体各成员之间或结构体的尾部需要添补一些空白字节(padding),因而结构体的大小并不一定等于各成员大小之和。包含相同成员的结构体,如果成员声明的顺序不同,其占用的内存空间也可能不同。尽管在程序中可以利用sizeof获取当前编译条件下结构体所占内存空间的大小,但深入了解结构体中成员对齐所遵循的规则也很有必要。首先需要说明一下对齐的概转载 2013-07-05 11:57:41 · 1923 阅读 · 0 评论 -
简洁高效的LRU Map C++实现
LRU是缓存替换的一个重要原则。其思想可以广泛的应用于很多场合。通过维护一个Key和Timestamp之间的双向映射,可以实现一个简洁高效的通用LRU Map。 1: #include 2: #include 3: #include 4: using namespace std; 5: 6: template转载 2013-07-04 22:13:46 · 1498 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用转载 2013-07-05 09:51:43 · 583 阅读 · 0 评论