C/C++
文章平均质量分 64
duhaomin
开朗,爱运动
展开
-
单元测试的遇到的问题以及收获
001:导入表:在XP的user32.dll里边,加载的时候会加载3个导入表,顺序是GDI32.DLLKENNEL32.DLL,NTDLL.DLL,里边包含的函数数量为:118,119,73Win7 64位下包含的是4个导入表,顺序是NTDLL.DLL,GDI32.DLL,KERNEL32.DLL,ADVAPI32.DLL,里边包含的函数数量为:91,117,125,1Win7 32位原创 2013-11-19 09:57:25 · 1506 阅读 · 0 评论 -
poj 1837 0-1背包问题
#include using namespace std;#define MAX 7501int main(){ int dp[21][MAX]={0};//30*25*20+1 int points[21]; int weights[21]; int points_num = 0;//可以挂物品的钩子的位置数量 int原创 2013-11-21 20:04:24 · 1043 阅读 · 0 评论 -
IDE Visual studio 优化---关于VS 的Debug版本和Release【疑惑】
今天编程遇到一个“奇怪”的现象,for循环里边,10^9次运算,居然0ms就结束,非常的不解,原来是VS自动优化导致的,具体如下:先看一下我测试的代码: int a = 0; while (1) { int i; for (i = 0 ; i < 100000; i ++) { for (int j = 0 ; j < 10000 ; j ++) { a原创 2013-12-06 13:40:36 · 1554 阅读 · 0 评论 -
Windows游戏加速外挂-变速齿轮 学习笔记-【第一篇】
找到两篇文章,是比较流行的方法,接下来记录一下收获:第一篇文章:“变速齿轮”研究手记转自:http://www.newasp.net/tech/58262.html注意:如果你看了本文,对我们这个软件有兴趣,请到我们的主页www.vrbrothers.com下载。注:为节省篇幅,本文对一些计算机术语直接使用而没有作详细的解释,读者若有不熟悉之处,建议参考清华大学翻译 2013-12-03 20:07:05 · 13871 阅读 · 2 评论 -
error LNK2019:无法解析的外部符号 __cdecl std::_String_base::_Xran(void) 和_Xlen(void)
error LNK2019:无法解析的外部符号 __cdecl std::_String_base::_Xran(void) 和_Xlen(void) 关于这个问题,试图解决了大约一天,也没有解决,原因是VS2005以及以下版本编译出来的静态库lib里边的内容是旧版本编译的,里边有关String的格式应该都是上边无法解析的那种,而我们如果使用高版本的VS试图打开以前的,除了自动转换一些可原创 2013-11-29 15:23:41 · 8361 阅读 · 0 评论 -
xxx.dll: fatal error LNK1169:找到一个或多个重定义的符号
当你所引用的dll存在多个重定义的符号的时候,如果使用Debug编译环境的话,就会提示这个错误,当然如果dll为了就是模块化,可以定义多个不同文件中,此时这样修改:项目---右键---属性----链接器---常规---强制文件输出---仅限多次定义的符号(/FORCE:MULTIPLE)。原创 2013-12-05 14:11:52 · 1879 阅读 · 0 评论 -
求两个整数相加的进位次数--位运算
基本的思想:一位一位的判断,不过这里考虑全是整数的情况:#include using namespace std;//最原始的,一位一位判断,不懂的话用几个数字带进去试试int main(){ //a,b是那两个整数,我这里没有考虑负数 int a = 63, b = 1 , count = 0,add = 0; while (a | b != 0) { if ((a &原创 2013-12-13 10:34:02 · 5240 阅读 · 0 评论 -
VirtualAlloc VirtualFree 例子
#include #include #include using namespace std;int main(void){ // //分配新内存大小。 UINT nNewSize = (UINT)((1500 / 1024.0) * 1024); PBYTE pNewBuffer = (PBYTE) VirtualAlloc(NULL,nNewSize,MEM_COMMIT,转载 2013-12-13 16:01:14 · 5562 阅读 · 0 评论 -
make makefile 的使用
首先创建几个文件:main.c:#include "mytool1.h"#include "mytool2.h"int main(int argc , char **argv){ mytool1_print("hello/n"); mytool2_print("hello/n"); return 0;}mytool1.c:#include "mytool1.h"翻译 2013-12-14 22:50:27 · 791 阅读 · 0 评论 -
进程间通信--001:管道
引用: http://blog.163.com/e_rommel/blog/static/187383045201192645544328/进程间通信的作用 进程间需要数据传输、资源共享和事件通知。进程间通信的方式 管道通信(无名管道和命名管道) 信号通信 内存资源共享翻译 2013-12-16 20:14:53 · 809 阅读 · 0 评论 -
C/C++中extern,static,const 关键字详解
转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html 1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有两个作用,第一个,当它与"C"一起连用时,如:转载 2013-12-17 23:33:37 · 869 阅读 · 0 评论 -
C++ 比较使用的一些知识
001:一个字符'#'有时候我们需要将一个函数、类型、变量名转换成字符串的形式,这个很容易:#define toString(name) #nameint main(){ //调用: int test = 0; cout << toString(test) << endl;}这里边,在一个变量名前边使用字符'#'就能达到这个目的。输出结果是:test002原创 2013-12-12 14:11:28 · 950 阅读 · 0 评论 -
public protected private非常生动的解释
public protected private非常生动的解释原文地址:http://blog.sina.com.cn/s/blog_4a1f4666010096ur.html说到public、protected和private三个修饰符,刚学C++时,被教教材上的那个表搞得晕晕忽忽的。曾几时为了考试还去背过那个表,现在想想真是哭笑不得。后来用得多了,就发现其实就是很简单的道理。转载 2014-01-01 19:15:12 · 981 阅读 · 0 评论 -
C++ Primary
10.7中:#includeint main(){ struct course_work { char course1[20]; char course2[20]; struct course_work* ptr; }; struct course_work semester[3]= {{"math1","math2",&semester[1]}, {"e原创 2013-12-24 23:02:20 · 2375 阅读 · 0 评论 -
C++中操作符重载
写一个比较简单的例子:#include#includeusing namespace std;class A{public: int a; int b; A(int _a , int _b):a(_a),b(_b){} A& operator = (const A &_a) { a = _a.a; b = _a.b; re原创 2014-01-05 02:01:57 · 870 阅读 · 0 评论 -
C++ Primary-预处理程序指令
将文件包含进来:#include "D:\\test\\1.h"预处理、宏定义的时候做判断使用#if#else#endif#if ndef#endif原创 2014-01-05 03:01:48 · 947 阅读 · 0 评论 -
__attribute__机制介绍
__attribute__机制介绍原文地址:http://blog.csdn.net/ithomer/article/details/6566739GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type转载 2014-01-15 18:12:00 · 800 阅读 · 0 评论 -
回调机制
001:回调函数方式:typedef void (__stdcall *DownloadCallback)(const char* pURL, bool bOK);void DownloadFile(const char* pURL, DownloadCallback callback){ cout << "downloading: " << pURL << "" << e翻译 2013-10-09 17:54:13 · 1302 阅读 · 0 评论 -
开源项目-Mplayer在windows下的编译总结
第一次编译开源项目,linux下make没用过,所以,本篇试用于linux下编译开源项目0基础的朋友。编译环境虽然是windows,但是主要的编译工作还是交给linux命令去工作(当然很多开源项目是可以跨平台的),主要还是为了更加的方便快捷,如何去做呢?首先总体总结一下编译的流程:一:编译环境准备。二:项目需要的特殊环境准备(有的没有,可以忽略)三:去相关网站下载源码四:编原创 2014-01-14 18:24:38 · 4179 阅读 · 0 评论 -
360笔试题-类指针
问题描述:地址:http://bbs.csdn.net/topics/390701174?page=1#post-396681441360笔试题 类指针#include using namespace std; class A{public: void a(){ cout "func_a"原创 2014-01-27 15:22:21 · 1385 阅读 · 2 评论 -
Placement new的用法及用途
所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可。举例来说:class foo{};foo* pfoo = new foo;pfoo指向的对象的地址你是不能决定的,因为new已经为你做了这些工作。第一步分配内存,第二步调用类的构造函数。而placement new是怎么做的呢,说白了就是把原本ne翻译 2014-01-27 16:31:50 · 1349 阅读 · 0 评论 -
最大堆、最小堆
定义:最大堆:根结点的键值是所有堆结点键值中最大者的堆。最小堆:根结点的键值是所有堆结点键值中最小者的堆。维基百科链接C++中的STL里边定义的堆操作:STL里面的堆操作一般用到的只有4个:make_heap();、pop_heap();、push_heap();、sort_heap();他们的头文件函数是#include 首先是make原创 2014-02-03 19:18:14 · 1338 阅读 · 0 评论 -
C++指针参数问题
代码:#includeusing namespace std;void getmemory(char *p){p=(char *) malloc(100);strcpy(p,"hello world");} int main(){ char *str=NULL; getmemory(str); printf("%s\n",str); free(str); retur原创 2014-02-03 21:52:52 · 946 阅读 · 0 评论 -
strlen 与 sizeof
代码: char *stra="12"; char strb[2]; printf("%d\n",strlen(stra)); printf("%d\n",sizeof(stra)); printf("%s %d\n",strb,strlen(strb)); printf("%s %d\n",strb,sizeof(strb));结果是什么?strle原创 2014-02-03 22:45:33 · 912 阅读 · 0 评论 -
C++ error: expected statement }
问题描述:在C中,有个宏定义:#define test_yes(x) p("%s .....ok!",x)#define test_no(x) p("%s .....failed!",x)#define test_boot(c,x) if(c)test_yes(x);else test_no(x)于是程序中出现:..........{if(....)原创 2013-11-11 18:29:38 · 4436 阅读 · 0 评论 -
基础知识中的注意点
001:在静态类中,不可以有非静态的成员或者成员函数。002:Class 与 Struct的区别:1:权限,Class内部默认是private,Struct默认是public,都可以继承、多态,继承方式根据子类来定;2:模版的使用,具体看我转载的一篇文章:[C++]基本问题1-C++中struct和class的区别。原创 2013-10-11 13:49:35 · 841 阅读 · 0 评论 -
C++中实现回调机制的几种方式
C++中实现回调机制的几种方式转载地址:http://www.cnblogs.com/weiym/archive/2012/08/28/2660053.html#include #includeusing namespace std;(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗转载 2013-10-09 16:23:44 · 1172 阅读 · 0 评论 -
c++中的内存分配方式,以及使用过程中需要小心的地方
c++中的内存分配方式,以及使用过程中需要小心的地方内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容翻译 2013-09-05 16:05:41 · 1230 阅读 · 0 评论 -
C++运算符重载需要注意的地方
原文地址:http://www.2cto.com/kf/201208/151228.html有时候自己写一个类,需要重载运算符,但对于一些操作符(如==、等),可以在类里写,也可以在类外写。那么 C++ 编译器会去怎么调用呢?首先,我们知道,“重载” 机制可以允许多个函数有相同的函数名,但参数列表必须不同。C++编译器经过名字改编(name mangling),可以在调用时依据所传翻译 2014-02-04 22:43:55 · 1451 阅读 · 0 评论 -
[C\C++]基本问题1——C++中struct和class的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class转载 2013-10-09 14:30:50 · 1489 阅读 · 0 评论 -
抽象类、虚函数、纯虚函数、接口、多态、继承(多位置转载外加自己的一点代码)
抽象类、虚函数、接口、多态概念与关系的理解(转)转载地址:http://hi.baidu.com/futantan/item/7bba8be289ae2612595dd82b抽象类:不能实例化。可以在抽象类中定义抽象方法,以供派生类写具体方法。派生类也可以保留抽象方法,但该类必须为抽象类。也可以在抽象类中写非抽象方法。例子:抽象类public abstrac原创 2013-10-08 16:36:00 · 1409 阅读 · 0 评论 -
《Linux操作系统下C语言编程入门》 - linux 进程
转载自:《Linux操作系统下C语言编程入门》头文件 #include 获取进程id:pid_t getpid();获取进程的父亲id:pid_t getppid();获取进程对应的应用程序对用的操作系统用户的id(进程所有者的id):uid_t getuid();进程有效用户id uid_t geteuid();用户所在分组的id: gid_t原创 2013-12-21 22:14:46 · 1408 阅读 · 0 评论 -
汇编指令总结
001 :esp始终指向栈顶002:ebp对于栈的操作主要靠它来实现,当操作栈里边的元素的时候,将esp的值赋给ebp,这样ebp+i或者-i来找到对应的数据003:一般函数进去的时候是这样的:004012F0 push ebp 004012F1 mov ebp,esp 004012F3 and esp,0FFF原创 2013-12-13 16:11:51 · 1237 阅读 · 0 评论 -
VC++环境下的调用约定:_cdecl _stdcall _fastcall thiscall
VC++环境下的调用约定:_cdecl _stdcall _fastcall thiscall_cdecl :属于VC++环境下的关键字,函数可以显示的声明为该调用方式,调用方负责平衡栈,不定参数的函数可以使用,C/C++默认的调用方式_stdcall :属于VC++环境下的关键字,函数可以显示的声明为该调用方式被调用方负责平衡栈,不定参数函数无法使用_fas原创 2014-02-21 13:47:06 · 2079 阅读 · 0 评论 -
白天看到的一道算法题目,应该是平衡二叉树方面的
开始想到的是最大堆,后来感觉红黑树、平衡二叉树都行。明天起来弄一下。2) 假设有一个数组,里面的数字没有排序,请找出乱序的对数。乱序定义如下例: 数组包括1,2,5,4,3, 按从左到右一共有以下数对: (1,2),(1,5),(1,4),(1,3),(2,5),(2,4),(2,3),(5,4),(5,3),(4,3)。 如果数对(a,b)中a>b,则定义为乱序对。这里有三个乱序对,(5原创 2014-02-13 09:25:35 · 1240 阅读 · 0 评论 -
AVL平衡二叉搜索树
原文:维基百科AVL树C++版 AVL树的实现 C语言版 平衡二叉树的 插入 删除 查找 等功能c语言实现 数据结构原创 2014-02-03 11:21:05 · 1157 阅读 · 0 评论 -
linux系统 进程管理一点总结【001】
1进程状态:运行态、就绪态、封锁态(等待态、阻塞态、挂起态)。其中,处于运行态的进程只能等于CPU的数量,比如单核CPU 的机器只能同时一个进程在运行处于就绪和封锁态的进程可以有很多,具体看下:【图片来自:http://blog.sina.com.cn/s/blog_7c03bb1f0100wcco.html】实际系统更为复杂,多了两个状态:新建态、终止态,具体原创 2014-02-15 15:21:13 · 1255 阅读 · 0 评论 -
_exit 与 exit 的区别
_exit 与 exit 的区别_exit终止调用进程,但不关闭文件,不清除输出缓存,也不调用出口函数。exit函数将终止调用进程。在退出程序之前,所有文件关闭,缓冲输出内容将刷新定义,并调用所有已刷新的“出口函数”(由atexit定义)。‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很 突出。原创 2014-02-16 03:39:53 · 2058 阅读 · 0 评论 -
linux文件系统总结
Linux重要特征就是支持多种不同的文件系统,例如:ext,FAT,ext2,ext3,MINIX,MS DOS,SYSV,目前 Linux使用的是ext3,它最主要的优点是在ext2基础上增加了异步日志。ext2可以管理2G的文件系统,而VFS虚拟文件系统将这个限制提高到4TBext2文件名长度可以达到255,如果需要,甚至可以增加到10121:物理结构文件信息也是保存在数据原创 2014-02-16 03:23:05 · 2024 阅读 · 0 评论 -
linux内存管理
linux内存管理原创 2014-02-16 05:59:12 · 846 阅读 · 0 评论