
c++
jphaoren
这个作者很懒,什么都没留下…
展开
-
C++中回调(CallBack)的使用方法
<br />转自:http://c.chinaitlab.com/cc/example/200908/791081.html<br /> <br />回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。 一般情况下, 我们使用的回调函数基本都是采用C语言风格。 这里介绍转载 2010-06-19 01:52:00 · 942 阅读 · 0 评论 -
虚函数的一个小问题
<br />#include "stdafx.h"#include < iostream>using namespace std;class A{public: A(){} virtual ~A(){} virtual void print() { cout<<"this is A class"<<<"this is B class"<<<"this is C class" <print(); B* b = new B; b->print();}原创 2010-08-30 05:54:00 · 441 阅读 · 0 评论 -
网络游戏服务器架构设计(转)
<br />登录服的设计 -- 功能需求<br /><br />正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。<br /><br />想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。<br /><br />这个方法存在的安全隐患实在太大,明文的密码传输太容易被截获了。那我转载 2010-09-10 17:22:00 · 3310 阅读 · 0 评论 -
面试我的大哥说错了
<br /><br />#include "stdafx.h"<br />#include <iostream><br /> <br />using namespace std;<br /> <br />void main(void)<br />{<br />char* str = "0123456789";<br />strcpy( str+3 ,"ABCD");<br />cout << str <<endl;<br /><br />}<br /> <br /> <br /><br />#include原创 2010-09-01 16:56:00 · 501 阅读 · 0 评论 -
快速排序算法
<br /><br /> <br />转自:http://www.yuanma.org/data/2006/0609/article_740.htm<br /> <br />快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。<br /> 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用转载 2010-09-02 11:54:00 · 423 阅读 · 0 评论 -
DLL中调用约定和名称修饰
<br />转自:http://dev.youkuaiyun.com/htmls/25/25141.html<br /> <br /> <br /><br />调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。<br /> <br />在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同原创 2010-09-15 17:45:00 · 388 阅读 · 0 评论 -
简单实现设计模式
<br />转自:http://bbs.gameres.com/showthread.asp?threadid=6266<br /> <br /><br />下面这些设计模式的实现都是一些简单的示例实现,如果你希望更稳固,更方便的实现,请自己修改。我以Gof的书作为蓝本,实现里面可以被抽象的设计模式,里面使用Loki, Boost, STL的一些东西,如果有疑问的话请翻阅相关书籍。<br />//********************************************************转载 2010-09-16 17:56:00 · 512 阅读 · 0 评论 -
GDB调试精粹及使用实例
<br />转自:http://fanqiang.chinaunix.net/program/other/2006-07-14/4834.shtml原创 2010-09-25 13:56:00 · 416 阅读 · 0 评论 -
从文件读入整数并动态设置数组内容
<br />#include<stdio.h><br />#include<stdlib.h><br />#include <malloc.h><br />int main(void)<br />{<br /> FILE * pfstream;<br /> int row = 0;<br /> int col = 0;<br /> int i = 0;<br /> int j = 0;<br /> int item;<br /> int *narray = NULL原创 2010-09-21 16:51:00 · 578 阅读 · 0 评论 -
深拷贝和浅拷贝
深拷贝和浅拷贝 其实就是说关于 复制构造函数的。 也是有指针成员。当类的对象 复制的时候,深拷贝就是 重新申请内存,把指针成员的值,复制过来,浅拷贝 就是不申请内存,这样2个对象指向同一个内存,当其中一个释放的时候,程序出错。(貌似以前看过浅拷贝也有好用的时候,有时间再找下)。#include "stdafx.h"#include #include using namespace std;//class Internet //{ //public: //Internet(char*name,char*add转载 2010-08-30 07:16:00 · 454 阅读 · 0 评论 -
C++总结 ----- 静态变量和静态函数
转自:http://blog.youkuaiyun.com/gudulyn/archive/2006/04/21/672231.aspx在C语言中有静态数据类型,声明一个静态数据类型意味着:该变量的生存周期是静态的,即在程序的开始即分配到程序,终止时才释放。在C++中,声明一个类的静态数据成员意味着所有的实例只有该数据成员的一个拷贝。 《深入浅出MFC》这样解释: Static 成员不属于对象的一部分,而是类的一部分。所以程序可以在没有诞生分和 对象的时候就处理此种成员变量.但必须首先初转载 2010-08-24 18:04:00 · 861 阅读 · 0 评论 -
在vs2008中编写dll如何生成lib文件
1 在Visual C++ 里面选择Win32,新建一个Win32 Project工程,名称为mydll2 在Application Settings窗口,Application type中选择 DLL; additional options中选择Empty project。点击完成3 新建mydll.cpp和mydll.h两个文件4 在mydll.h里面添加代码:extern "C" _declspec(dllexport) int Min(int a, int b);5 在mydl转载 2010-08-24 01:33:00 · 3277 阅读 · 1 评论 -
STL使用入门( Using STL)
<br />转自:http://oss.org.cn/?action-viewnews-itemid-3746<br /> <br />很有用的一篇文章,情况工作中都遇见过。<br /> <br /> <br /> <br /> <br />前面的话(Winter) C++已经在中国相当普及,但C++ STL却使用的人不多。许多人有一定成见,认为STL降低了C++的效率。特别是那些自诩为技术专家的人,他们一直使用C语言,对于新事物总是先用批判的眼光对待......先不说这些,我这几天看见http://stl转载 2010-06-19 00:48:00 · 423 阅读 · 0 评论 -
C++开源库
转自:http://blog.sina.com.cn/s/blog_56fdaf150100hgf5.html<br /> <br />C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定转载 2010-06-19 00:56:00 · 910 阅读 · 0 评论 -
浅析C++中虚函数的调用及对象的内部布局
<br />转自:http://blog.youkuaiyun.com/liuchuanwen109/archive/2008/09/14/2849748.aspx<br /> <br /> <br />在我那篇《浅析C++中的this指针》中,我通过分析C++代码编译后生成的汇编代码来分析this指针的实现方法。这次我依然用分析C++代码编译后生成的汇编代码来说明C++中虚函数调用的实现方法,顺便也说明一下C++中的对象内部布局。下面所有的汇编代码都是用VC2005编译出来的。虽然,不同的编译器可能会编译出不同的结果转载 2010-06-19 01:36:00 · 372 阅读 · 0 评论 -
map重复插入
<br />map重复插入,第二次插入的无效。<br /> <br /> <br /> <br /><br /> <br />#include "item_base.h"<br />#include "test.h"<br />#include <string.h><br /> <br /> <br />int main(void)<br />{<br /> map<int,int>temp;<br /> map<int,int>::iterator iter;<br /> temp.原创 2010-06-21 14:46:00 · 5041 阅读 · 1 评论 -
stringstream的用法
【本文来自】http://www.builder.com.cn/2003/0304/83250.shtmlhttp://www.cppblog.com/alantop/archive/2007/07/10/27823.html使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外转载 2010-06-22 02:02:00 · 547 阅读 · 0 评论 -
Cross-Platform GUI Programming with wxWidgets
<br />转自:http://blog.gisforum.net/u/6185/archives/2007/1701.html<br /> <br />近日在http://www.okok.org 上得知有一个开源FEM的项目,http://okok.org/cgi-bin/ut/topic_show.cgi?id=144297&h =1&bpg=1&age=30 ,其中用到了另一个开源项目wxWidgets,<br /><br /> 先搜集了点关于wxWidgets预备知识<br /> 《 Cros转载 2010-06-22 10:42:00 · 1517 阅读 · 0 评论 -
c++ 文件读写
<br />文件读写,读就是读,写就是写,打个比方,读就相当于scanf(),写就相当于printf(),不要想着在读的时候同时能写,和在写的时候读,认真想下,想东西部要不着边际,想下可行度。原创 2010-06-22 11:09:00 · 524 阅读 · 0 评论 -
非MFC的C++内存泄露跟踪与调试
<br />转自:http://blog.youkuaiyun.com/leweet/archive/2009/01/05/3707378.aspx<br /> <br /><br />C++提供的内存管理机制非常灵活,内存的分配和释放完全有程序员自己控制。不过任何事物都是其两面性,灵活的另一面则是带来了复杂性。经常我们用New,malloc,realloc分配了内存,却可能也很容易忘记用Delete,free来释放。C++内存泄露这是很多程序常见的问题,也给初学者带来不少的困惑。如为什么程序运行后内存在不停的增加(W转载 2010-08-16 00:54:00 · 1193 阅读 · 0 评论 -
指向结构体的指针和指向结构体指针的指针
<br />刚才用结构体的指针,操作内存出错了,记录一下。<br /> <br /> <br />struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用。 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,<br />也可以指向数组。<br /><br /><br />struct T ** ptr, 说白了 就是一个结构体指针的数组,数组内都是指针,还要分配内存。<br /> <br /> <br /><br />/*<br />struct T<br />{<b原创 2010-09-28 11:21:00 · 12454 阅读 · 2 评论 -
vs2008 设置
<br /><br /><UserSettings><br /><ApplicationIdentity version="8.0"/><br /><ToolsOptions><br /><ToolsOptionsCategory name="Environment" RegisteredName="Environment"><br /><ToolsOptionsSubCategory name="Documents" RegisteredName="Documents" PackageName="Visu原创 2010-12-05 23:53:00 · 6648 阅读 · 0 评论 -
字节序,C程序内存布局【很好的文章】
<br />转自:http://blogold.chinaunix.net/u1/43190/showart.php?id=1090249s<br /> <br />一、字节序定义<br />字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。<br />其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。<br />在所有的介绍字节序的文章中都会提到字节序分为两类:Big-转载 2011-03-28 17:46:00 · 868 阅读 · 0 评论 -
vsprintf 与 vsnprintf
vsprintf<br /> /* 函数名: vsprintf 功 能: 送格式化输出到串中 返回值: 正常情况下返回生成字串的长度(除去/0),错误情况返回负值 用 法: int vsprintf(char *string, char *format, va_list param); 注: 该函数会出现内存溢出情况,建议使用vsnprintf 程序例: */ #include <stdarg.h> char buffer[80]; int vspf(char *fmt转载 2011-05-18 20:14:00 · 13218 阅读 · 0 评论 -
要好好掌握反汇编调试程序BUG
<br />没事的时候 用GOOGLE搜搜 反汇编调试,看看别人用反汇编调试的例子。<br /> <br />备忘--通过反汇编定位release版本程序的bug所在<br />转自:http://blog.youkuaiyun.com/swordll80/archive/2007/01/06/1475847.aspx<br /> <br /><br />今天帮忙调试了一个release版本的程序,此程序运行较长一段时间后终于(不挂就不好查了)挂了,系统报错是某处的指令访问了非法地址,显然是内存访问越界(不测试也能猜到转载 2011-04-04 14:46:00 · 10190 阅读 · 0 评论 -
寻路小例子 没写完(待续)
<br /><br />#include "Graph.h"<br />#include <iostream><br />#include <assert.h><br /> <br />using namespace std;<br /> <br />#define INVALID_ID -1<br /> <br />#define MAX_PATH_SIZE900<br /> <br />#define MAX_PATH_SCENEID 20<br />//#define INFINITY 655原创 2011-04-05 23:28:00 · 911 阅读 · 0 评论 -
启用地址级调试的设置
#271、启用地址级调试的设置的作用是什么?<br />原文链接:What the Enable Address-Level Debugging option does<br />操作步骤:<br />菜单:工具+选项+调试+常规,有个"启用地址级调试"项,如果启用该项,将会得到另外三个调试工具:“反汇编”窗口、“寄存器”窗口和地址断点。<br /><br />如果不选中此项,就不会有。 <br /><br />评论:启用地址级调试非常有用,可特别针对一些深层次的bug,容易找到问题所在。<br /><br转载 2011-04-12 19:48:00 · 1825 阅读 · 0 评论 -
vs2008【断点无效】解决方法
<br />果是在debug下,请打开:<br />Tools->Option->debugging->General 找到<br />Require source files to exactly match the original version<br />不要打勾<br /> <br />即:<br />工具->选项->调试里->常规 找到<br />要求原文件与原始版本完全匹配<br />不要打勾<br /> <br />再调试一下试试,应该可以了。<br />如果不行,清一下工程.转载 2011-04-18 15:35:00 · 2486 阅读 · 0 评论 -
c++异常处理机制示例及讲解
转自: http://ticktick.blog.51cto.com/823160/191881 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/191881 这两天我写了一个测试c++异常处理机制的例子,感觉有很好的示范作用转载 2011-10-24 00:09:44 · 800 阅读 · 0 评论 -
windows 平台下 生成Dump文件例子
/////////////////////////////////////////////////////////////////////////////////// MiniDump.cpp //// Sample approach to collecting data with MiniDumpWriteDump and MiniDumpCallback // // A转载 2011-10-28 02:02:55 · 885 阅读 · 0 评论 -
算法复杂度的计算
<br />算法复杂度是在《数据结构》这门课程的第一章里出现的,因为它稍微涉及到一些数学问题,所以很多同学感觉很难,加上这个概念也不是那么具体,更让许多同学学起来无从下手,下面我们就这个问题给各位考生进行分析。<br />首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后者是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。<br />当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,因此,在算法分析时,往往对两者转载 2011-05-16 16:35:00 · 910 阅读 · 0 评论 -
C语言中的联合体union
转自:http://blogold.chinaunix.net/u2/84450/showart_1829958.html在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也<br />可以使用联合体来发挥其长处。首先看一段代码:union myun <br />{<br /> struct { int x; int y; int z; }u; <br /> int k; <br转载 2011-03-26 16:06:00 · 781 阅读 · 0 评论 -
关于c++ vs2008中数据断点的设置
熟悉数据断点的设置,能提高调试效率。简单看下,数据断点是怎么设置的。一般来说,函数断点在下面几种情形下有用: 1 例如调试一个网站程序,你通过分析网站的日志发现最有可能发生错误的函数,打开调试器并将调试器附加到程序上去,设置函数断点,重新执行网站……这样做的好处是,不用到处打开源文件去找出错的源代码行,调试器会自动打开源代码,并且在函数的入口处中断(岂不是很方便?)。 2 例如你在阅读源代码的时候,通常在读到虚函数调用的时候,因为通常这种调用都是通过基类指针调用的,而你又一时半会不知道到底有哪个继承类转载 2011-03-23 10:31:00 · 10563 阅读 · 1 评论 -
可变参数的宏
<br /><br />摘要:<br />在一些论坛上看了一下有关这方面的争议,决定给大家一个“正规”的说法,防止被误导,可以对照着英文原文阅读我的翻译。<br />---------------------------------------------------------------------------------------------------------------------<br />声明:<br /> 此文为原创翻译,欢迎转载,转载请保留如下信息<br />转载 2010-10-24 03:46:00 · 581 阅读 · 0 评论 -
Linux定时器(计时器)
<br />【实现功能】:Linux下的C编程:编写一个程序(库),实现定时器(计时器)的功能,它能为用户提供在同一进程中多次使用的定时器。这里要求用信号来实现。<br />【解题思路】:编写一个结构体Timer代表一个计时器,然后再定义Timer类型的数组myTimer[N],用来保存我们设置的定时器;再定义函数setTimer()生成计时器,并将生成的计时器保存到myTimer中,这样通过多次调用,就可以在同一个进程中生成多个计时器;定义timeout()信号处理函数,每隔一秒产生一个信号,通过调用ti转载 2010-11-03 14:42:00 · 1670 阅读 · 0 评论 -
wxwidgets的手册
http://zetcode.com/tutorials/wxwidgetstutorial/firstprograms/原创 2010-11-04 02:20:00 · 967 阅读 · 0 评论 -
内存对齐
<br /><br />对于内存对齐的一点理解:<br />可以根据两个文章对比的理解。<br /> <br />Struct 是根据每个成员变量定义的顺序去判断内存字节对齐需要补齐的位,short 内存就按两个字节对齐,double 就按8个字节对齐。<br /> <br />几个简单的例子:<br /> typedef struct ms1<br /> {<br /> char a;<br /> int b;<br /> } MS1;<br /> 假设MS1按如下方式内存布局(原创 2010-11-05 17:47:00 · 476 阅读 · 0 评论 -
glib库简介
<br /><br />如果在程序中要使用到glib库中的函数,则应该包含glib.h头文件(在gtk.h和gnome.h头文件中已经包含了glib.h了)<br />1 类型定义1. 整数类型:gint8、guint8、gint16、guint16、gint31、guint32、gint64、guint64。不是所有的平台都提供64位整型 <br />2. 整数类型gshort、glong、gint和short、long、int相同 <br />3. 布尔类型gboolean:gboolean可以取两个值转载 2010-11-10 14:35:00 · 1461 阅读 · 0 评论 -
squirrel英文文档
<br /><br /> <br />http://squirrel-lang.org/doc/squirrel2.html<br /> <br /> <br /> <br />转自我的cnblogs<br />最近在搜索AngleScript bug时,突然发现一个新的轻量级OO脚本语言Squirrel 翻译过来就是松鼠的意思<br />来看下这个脚本的样子:<br />local table = { a = "10" subtable = { array = [1,2,3] }, [10 + 123]原创 2010-11-12 18:07:00 · 989 阅读 · 0 评论 -
tinyXML
<br />转自:http://panpan.blog.51cto.com/489034/104961最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。以后的文章里会讲解使用Xerces进行C++ XML解析的例子,希望大家一起交流。<br />TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件转载 2010-11-19 23:29:00 · 790 阅读 · 0 评论