
C/C++
qiming_zhang
这个作者很懒,什么都没留下…
展开
-
模块基地址重定位和绑定
模块基地址重定位和绑定:可减少应用程序的载入时间。模块基地址重定位:当默认基地址冲突的时候,程序会被迫改变基地址,这样会效率很低,所以可以设置不同的基地址来避免。方式1:在项目属性中设置Configuration Properties/Linker/AdvancedBase Address : 0x20000000方式2:使用rebase.e原创 2012-05-22 14:30:28 · 1191 阅读 · 0 评论 -
DLL
一、建立静态链接库.lib的方式1、建立工程文件win32 project2、选择静态库static library3、lib的头文件#ifndef _TEST_LIB_#define _TEST_LIB_extern "C" int add(int x, int y);#endifextern "C" 只有在编写C++代码时才使原创 2012-05-21 18:04:14 · 759 阅读 · 0 评论 -
【大数据处理】bitmap思想和2-Bitmap 实现
1. Bit-map思想给你一堆西安市的电话号码列表,数量大概在千万级,要求从中找出所有重复的电话号码,需要时间复杂度尽可能小。目前西安市的电话号码大概都以8开头,为8位,也就是类似于82678578这样子二重暴力搜索时间复杂度太高,这里我们不予考虑。容易想到的办法就是建立一个标志数组,int boolean都行,用相应的位置值来代替这个号码是否出现,根据数组的可直接存取特性,转载 2012-04-17 11:39:45 · 1379 阅读 · 0 评论 -
PE结构详解
1 基本概念下表描述了贯穿于本文中的一些概念:名称描述地址是“虚拟地址”而不是“物理地址”。为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大)镜像文件包含以EXE文件为代表的“可执行文件”、以D转载 2012-03-01 15:42:26 · 37996 阅读 · 2 评论 -
C/C++ 疑难点(不断更新中……)
1、cout和 指针输出#include using namespace std;int main(){ char s[] = "012345678", *p = s; cout << *p++ << *(p++) << (*p)++ << *++p << *(++p) << ++*p << ++(*p)<< endl; return 0;}cout的运算是从右向左进行的原创 2011-10-23 14:03:45 · 723 阅读 · 0 评论 -
blat命令行发邮件小工具【简单使用技巧】
Blat 是一个命令行发邮件的小工具,仅支持简单的SMTP协议,需要SMTP服务器的支持。据说现在新申请的邮箱已经不支持SMTP服务了,是为了抑制垃圾邮件而采取的措施。但是,Blat也是一个非常方便的小工具,基本上可以满足一般人的需求。提供下载链接地址:blat262.full.zip(Blat.exe V2.6.2、Blat.dll V2.6.2、Blat.lib )ht原创 2010-12-09 15:55:00 · 29257 阅读 · 6 评论 -
解析文件,要验证文件完整性
程序中需要解析一个列表文件,纯文本的。当时,没有考虑太多,就直接解析了。但是后来程序时而崩溃。究其原因,原来获得的列表文件,是有问题的,不完全的,有半行情况出现。所以在解析文件的时候,要首先验证文件的完整性,然后再进行解析。必要时,对行完整性也要进行验证。这样就会避免崩溃的状况发生。 有些文件LOG,之类能有结束标志最好,方便完整性的验证。原创 2011-07-04 16:46:09 · 1252 阅读 · 0 评论 -
回调的写法
class Test{public: static void callBackFun(void){}; //因为callBackFun默认有一个const Test* 的指针};typedef void (*FPtr)(void);void Fun(FPtr ptr){ ptr();}void main(void){ Fun(Test::callBa原创 2011-10-23 14:33:58 · 727 阅读 · 0 评论 -
浮点数的存储方式 float
int和float都是4字节32位表示形式。为什么float的范围大于int?float精度为6~7位。1.66*10^10的数字结果并不是166 0000 0000 指数越大,误差越大。这些问题,都是浮点数的存储方式造成的。 float和double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53原创 2011-11-13 17:16:42 · 1678 阅读 · 0 评论 -
9X、2000、XP、2003注册表设置
《开始菜单及相关设置》 [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer] "NoRecentDocsMenu"=dword:00000001(隐藏开始->文档菜单) "NoRecentDocsHistory"=dword:00000001(禁止将打开的文档存入历史记录) "转载 2011-05-09 14:02:00 · 835 阅读 · 0 评论 -
获得Windows版本及SP信息
Operating systemVersion numberdwMajorVersiondwMinorVersionOtherWindows 76.161 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION Windows Server 2008 R2 6原创 2010-12-16 14:55:00 · 3011 阅读 · 0 评论 -
错误处理
在我们编程的时候,一定要注意对参数、返回值、变量等进行检查和错误处理。否则你将会对其付出血的代价,比如我的误删事件。参数:对参数进行有效性验证,这一点很重要,一个错误的参数可能会导致问题的出现,一定要验证参数是否为正确参数范围内。但这一点我们经常会遗忘,或者不确定参数的有效范围是什么。返回值:对返回值验证函数是否执行成功,程序是否可继续执行,最重要是我们拿的到返回值是否是有效的返回值,我们原创 2011-02-22 22:57:00 · 543 阅读 · 0 评论 -
改变程序入口函数#pragma comment(linker, "/ENTRY:main")
#include #pragma comment(linker, "/ENTRY:foo ") int main(){ return 0;} int foo(){ std::cout return 0;}原创 2010-12-20 10:45:00 · 2982 阅读 · 0 评论 -
Google发布C++编程规范
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml原创 2011-03-08 11:51:00 · 764 阅读 · 0 评论 -
windows内核安全编程——内核上机指导
1、WDK下载地址:windows driver kithttps://connect.microsoft.com/default.aspx2、第一个列子:first.c#include //卸载函数VOID DriverUnload(PDRIVER_OBJECT driver){ DbgPrint("first: Our driver is unloading.原创 2012-12-20 01:22:04 · 1885 阅读 · 0 评论