C/C++
文章平均质量分 70
wuleibilly3
这个作者很懒,什么都没留下…
展开
-
通讯录管理程序
#include #include #include #include using namespace std; //定义文件名#define FileName "data.txt" //定义循环变量bool mVal=true; //定义个新的变量typedef string mData;typedef char mChar[50原创 2008-08-28 02:03:00 · 931 阅读 · 0 评论 -
C++11 多线程
新特性之描述:虽然 C++11 会在语言的定义上提供一个内存模型以支持线程,但线程的使用主要将以 C++11 标准库的方式呈现。C++11 标准库会提供类型 thread (std::thread)。若要运行一个线程,可以创建一个类型 thread 的实体,其初始参数为一个函数对象,以及该函数对象所需要的参数。通过成员函数 std::thread::join() 对线程会合的支持,一个线程原创 2013-06-19 14:16:04 · 4125 阅读 · 0 评论 -
堆排序
#define HEAP_SWAP(a,b) \ do \ {\ int t = a;\ a = b;\ b = t;\ } while (0);// array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数组的长度void HeapAdjust(int array[],int i,int nLength)//本函数功能是:根据数组array构建大根堆{转载 2012-06-28 15:14:43 · 608 阅读 · 0 评论 -
内存泄露打印new和delete重载
#define TRACE_MEM #ifdef TRACE_MEM#define MEM_NEW new(__FILE__, __LINE__)#define MEM_DELETE delete#else#define MEM_NEW new#define MEM_DELETE delete#endif#ifdef TRACE_MEMinline void * __cdec原创 2012-06-01 18:05:50 · 494 阅读 · 0 评论 -
样条曲线
typedef struct _Point{ float x; float y;}Point;float Fac(int n){ if(n == 0) { return 1; } return n * Fac(n-1);}float pow(float x,int y){ if(y == 0) { return 1; } return x*pow(原创 2010-06-22 11:28:00 · 419 阅读 · 0 评论 -
指针与引用的区别
<br /><br />1.引用是对象的一个别名<br />int a = 1;<br />int& b = a;<br />b引用了a,b是a的一个别名<br /> <br />2.不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)<br />int& a = NULL; //错误<br />int* b = NULL;//正确<br /> <br />3.引用被创建的同时必须被初始化,一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)<br />以下示例程序原创 2010-12-13 16:32:00 · 298 阅读 · 0 评论 -
内存池实现
/** C内存池实现代码 * 作者:WDL* 出处:http://blog.csdn.net/wuleibilly3* 转载请注明本博客*///内存池typedef struct _MemTable MemTable;typedef struct _MemPool MemPool;typedef struct _MemNode MemNode;typedef struct _CheckAvail CheckAvail;#define MIN_M原创 2010-09-17 16:31:00 · 429 阅读 · 0 评论 -
避免内存碎片的小技巧
建立一个结构体里面包含一个指针用来存放数据。最初的定义是这样的typedef struct _NODE{ char *pData; int nLength;} Node;使用的时候:Node *pNode = (Node*)malloc(sizeof(Node));pNode->Data = (char*)malloc(pNode->nLength);这样是没有任何问题的,但是却有内存碎片的产生,本来这个pNode 和 p->Data就是一起用的,所以最好分配到一个内存的地方。解决办法:type原创 2010-08-25 19:06:00 · 414 阅读 · 0 评论 -
C++四种类型转换
dynamic_cast:通常在基类和派生类之间转换时使用const_cast:常量转换成非常量static_cast:通用转换,转换时 会做必要的分析reinterpret_cast:不进行分析 直接将二进制数据 拷贝过去原创 2010-07-24 14:37:00 · 250 阅读 · 0 评论 -
使用宏技巧
技巧一:把枚举值转换成字符串#define CaseEnum(a) case(a):LogMsgToFile(#a,id,time)switch(msg_passed_in){ CaseEnum(MSG_YouWereHit); ReactToHit(); break;} 技巧二:利用二进制表达式得到编译期常量#define cat(a,b)原创 2010-02-27 21:54:00 · 534 阅读 · 0 评论 -
通过进程名获取进程PID
/*用CreateToolhelp32Snapshot进行对系统所有进程进行快照,然后利用Process32First取得第一个进程句柄,然后把得到的PROCESSENTRY32结构体中的szExeFile就是进程名进行比较,利用Process32Next进行循环比较,具体用法看msdn,就可以得到进程句柄了,,,附上C/C++代码:*/#include#include#inclu原创 2009-07-29 06:25:00 · 11192 阅读 · 6 评论 -
多线程同步
#include #include #include //缺少将出现error C2039: _beginthreadex : is not a member of `global namespace, long int one=0,two=0; CRITICAL_SECTION g_cs; UINT WINAPI Threahfun(LP原创 2009-07-29 06:21:00 · 920 阅读 · 0 评论 -
变速齿轮
/*变速齿轮原理是,游戏在刷新画面时会用到时钟来控制刷新速度,有过游戏开发的人都知道,一般游戏锁定1秒30帧,这样会很流畅,人眼有视觉停顿,当速度达到1秒16帧的时候,就是在跑动画了,游戏用到的计时器有大部分是两个windows提供的api函数,一个是::GetTickCount,一个是::timeGetTime,这两个api的原型请查msdn,我们利用hook api 去修改它的值,从而改变原创 2009-07-18 16:03:00 · 3818 阅读 · 1 评论 -
HOOK全局键盘钩子
/*******KeyHookLib.h文件*********/ // 定义函数修饰宏,方便引用本DLL工程的导出函数 #ifdef KEYHOOKLIB_EXPORTS #define KEYHOOKLIB_API __declspec(dllexport) #else #define KEYHOOKLIB_API __declspec(dllimport) #endif // 声明要导出的函数原创 2008-09-02 19:13:00 · 2197 阅读 · 1 评论 -
远程注入线程
#include #include #include #include using namespace std;class InjectionRemoteThread{public: InjectionRemoteThread(const char *FileName,const char *DllName); DWORD GetProcessID(); //获原创 2008-08-28 02:11:00 · 744 阅读 · 0 评论