![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Experience
mengzhisuoliu
我有我自由你有感受
展开
-
【复制构造函数,赋值函数正确使用场景】
复制构造函数,赋值操作符原创 2022-04-16 08:59:45 · 261 阅读 · 0 评论 -
解决windows系统字体设置为125大小导致程序界面位置不一致的问题
在用户设置的显示为中等的情况下,125%,会导致界面的显示的位置不同,并且会导致滚动无法滚动到指定的位置我们可以通过该代码获取原始的比例进行适当调整 int nData1 = GetDeviceCaps(::GetDC(this->GetSafeHwnd()), LOGPIXELSY); m_uiZoomRate = (float)nData1 / 96;//100%是每英寸96个像素,原创 2017-12-29 11:53:25 · 8128 阅读 · 0 评论 -
Windows Hook Api
今天在写Hook ws2_32 的函数send的时候,发现总是让程序崩溃,崩溃的时候程序的崩溃点总是在ws2_32的模块中,最后发现在调用Hook函数时候,我进行了还原,还原的保护代码是PAGE_READWRITE,这样子导致其他线程在执行对应的地址代码产生了一个执行错误的代码!哎,太久没有使用逆向了,导致就生疏了!具体原因是:VirtualProtect ( pOld原创 2017-12-14 21:25:13 · 382 阅读 · 0 评论 -
程序异常立刻退出,如何定位关键代码位置
今天在调试一款程序的时候,发现这个运行在加载一个flash动画就立马退出了,调试了很久都米有办法抓到关键的代码位置,后面在调试终于找到了异常的代码点!主要是通过vs的输出找到的,还是记录下来,方便以后使用这个绝技!'Game.exe' (Win32): Unloaded 'F:\hdw_v2.0\system\Flash9f.ocx'The thread 0x37a0 has exit原创 2017-12-02 23:35:51 · 1399 阅读 · 0 评论 -
浮点类型 比较特别的操作,取整和不四舍五入
//下面结果所得2.5678 保留两位不进行4舍5入等于2.56 double nCurExpose=25678; double nCurRGB=10000; double dblRgbScale=(double)nCurExpose/(double)nCurRGB;//2.5678 int nRgbScale=(int)(dblRgbScale*100);//非4舍五入操作保留两位小数点原创 2017-12-19 18:28:23 · 1227 阅读 · 0 评论 -
WSACleanup 崩溃,以及使用注意
WSACleanup 在多线程多次调用会产生内存崩溃等现场发生!由于程序模块其他对象正在使用网络库等操作,而此时如果调用WSACleanup 则一定会崩溃!一般程序模块在启用的时候调用一次WSAStartup,退出时候调用WSACleanup ,DLL模块也是,这用就可以及时销毁网络资源原创 2017-10-20 11:58:32 · 3192 阅读 · 0 评论 -
vsprintf,vsprintf_s
最近在修复先前的源码的时候将vsprintf 都替换成vsprintf_s,发现竟然有很大一个坑在等着俺,哎!为什么呢?因为vsprintf_s 竟然没有vsprintf 写得好!LG2("nihao","%你好吗?");void LG2(char const* type, char const* format, ...){ char buf[8192] = {0}; int le原创 2017-08-06 23:29:03 · 11536 阅读 · 0 评论 -
Visual Assist 返回下一个光标点的设置
一直以来我使用的都是Alt+Left Arrow 返回上一个光标点,但是就很奇怪Alt+Right Arrow竟然不是返回前一个光标点,一直忍着没去搞,今天 研究了一下,终于设置好了现在分析和写代码更加方便了,看图原创 2017-08-12 17:18:39 · 686 阅读 · 0 评论 -
InitializeCriticalSectionAndSpinCount以及InitializeCriticalSection的区别
InitializeCriticalSectionAndSpinCount和InitializeCriticalSection 都是临界区的一种初始化,可是前者多了dwSpinCount参数,这个参数的作用是在进入临界区的时候CPU自选计数为什么要引用这个参数呢?在EnterCriticalSection调用这个参数,如果线程无法获取临界区则会进行睡眠,则CPU则进行线程环境上下切换,原创 2017-08-01 12:16:53 · 3380 阅读 · 0 评论 -
TCP 状态图
转载 2017-06-08 14:58:47 · 238 阅读 · 0 评论 -
vs2017 shlobj.h 报错 unexpected token 'identifier' (意外令牌'标识符')
Error C2760 syntax error: unexpected token 'identifier', expected 'type specifier' c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h 239 Warning C4091 'typedef '...原创 2019-08-05 17:47:55 · 6100 阅读 · 0 评论 -
vs2010 编译时 wcstok_s 未定义 解决方案
Error 21 error C3861: 'wcstok_s': identifier not found D:\Microsoft Visual Studio 10.0\VC\include\tchar.h 794今天在编译nodepad++ 一个插件的时候编译的时候竟然出现上面的一个错误,找了很久都没有办法解决。LocationNavigate.cpp...原创 2019-07-07 11:40:35 · 556 阅读 · 0 评论 -
C++ template 中的class 和 typename 的区别示例
转载https://blog.csdn.net/Function_Dou/article/details/84644963可以先看看上面的文章,下面是示例template<class T>class people{public: typedef T value_type; typedef T* pointer; typedef T& refere...转载 2019-07-04 11:33:54 · 1028 阅读 · 0 评论 -
windows 文件关联图标 变白
最近发现文件关联的图标莫名其妙的和关联的程序的图标是不一致的,看起来实在不美观,网上找了很多修复的教程都无法修复,现在我们看看具体如何修复以notepad++ 关联的图标变白为例子我们在windows打开注册表,搜索.txt我们根据Notepad++_file 值继续搜索项,删除后,然后右键管理员执行重建关联图标.bat,完事下载:htt...原创 2019-05-23 11:43:07 · 2044 阅读 · 1 评论 -
C++ VC++ C2662编译报错
Error C2662 'bool CListFileItem::equal2(const CListFileItem &)': cannot convert 'this' pointer from 'const CListFileItem' to 'CListFileItem &'意思:无法将 this 指针 从一个const CListFileItem 类...原创 2019-05-21 14:58:49 · 381 阅读 · 0 评论 -
C++ operator 的超棒demo
class CStrPtr { LPTSTR m_szStr;public: // A collection of constructors. CStrPtr(); CStrPtr(int iSiz); CStrPtr(CStrPtr& utStr); CStrPtr(LPCTSTR szStr); ~CStrPtr(); //类型转换的操作符写法,可以看到返回...原创 2019-05-06 13:59:11 · 206 阅读 · 0 评论 -
vs 快捷键
alt+o 是头文件和cpp文件跳转的快捷键原创 2017-05-02 11:23:02 · 452 阅读 · 0 评论 -
FTPZilla Server 中文传输解决办法
FileZilla Server 在0.9.6.2测试的时候发现其不支持中文,百度了一下都是Client的中文传输设置,在这里发现FileZilla Server如果需要支持中文的传输是需要打上补丁的补丁地址官方下载地址安装完毕了之后,停止FileZilla server.exe,然后将补丁包的程序替换启动即可,目前只支持到 0.9.41_2012030501 版本原创 2017-05-25 22:11:02 · 4943 阅读 · 0 评论 -
在使用lua的tolua的内存泄露注意
最近在项目中使用vector的导出类为lua使用,在测试内存泄露的时候发现会有内存泄露,当时以为是哪一处的C++代码写得有问题,最后发现是脚本在调用vector中出现了问题,1.vector是一个local变量 ,local vc=new vector()2.自认为lua会在内存清理的时候调用collectgarbage自动清理内存的,后来发现这是不正确的,lua并不会自动清理这原创 2016-11-20 22:17:13 · 2247 阅读 · 0 评论 -
winsock recv函数使用注意
Winsock int recv( SOCKET s, char FAR *buf, int len, int flags 支持MSG_WAITALL);在使用这个函数的时候为了能够一次性接收客户端的封包,我尝试使用了MSG_WAITALL的标志,但是这个标志使用上竟然有点奇怪,网上资料也相对比较少,最后在原创 2016-08-12 15:49:26 · 3856 阅读 · 1 评论 -
notepad++ 全选长度和内存的长度不一样
今天在做TCP服务端对接收的数据和长度进行了验证,发现将内存的数据粘贴到notepad++ 中全选后发现长度切不一样,有时候差异等于1,有时候差异又几百个字节,但是我的接收缓冲区的算法验证来验证去是对滴,然后我在内存发现回车复制到notepad++竟然编程了回车换行了,也就是/0xa 变成了/xa/xd,一个字节变成两个字节,特此记录一下!原创 2016-07-07 23:26:39 · 1768 阅读 · 0 评论 -
_stdcall 调用需要注意的问题
下次需要注意了原创 2016-06-16 14:25:58 · 693 阅读 · 0 评论 -
IE9 WIN7 卸载后解决安装的问题
在C:\windows\ie9_main.log中可以看到安装的信息00:01.607: INFO: Launched package installation: C:\windows\system32\dism.exe /online /add-package /packagepath:C:\windows\TEMP\IE9A997.tmp\IE9-neutral.Downlo原创 2016-04-23 22:27:45 · 2018 阅读 · 0 评论 -
普通验证码识别编写
普通验证码识别流程:1.首先进行切割,将验证码,分成一块一块,知道需要分析的模板位图2.建立起模板位图,像图片的中的8 2 4 8 5,针对每一个数字进行建立模板,模板大小固定3.模板位图和目标位图进行像素匹配,就是计算出每个模板位图的像素与目标位图切割对象的像素匹配情况,然后得出匹配最大值!关键:模板位图的像素起始匹配点 和目标位图切割对象(上图的 8 2 4 8 5)原创 2015-11-23 20:51:57 · 508 阅读 · 0 评论 -
Winnet Api 使用
HttpOpenRequest有一个标志位INTERNET_FLAG_NO_COOKIESDoes not automatically add cookie headers to requests, and does not automatically add returned cookies to the cookie database.MSDN上 不自动添加Cookies到原创 2015-11-16 16:46:02 · 648 阅读 · 0 评论 -
永远忘不了那天
2015年9月21号,我们离国庆放假还有几天时间了,并且离我那次面试已经差不多有一周年的纪念日了。 日子离得越来越近,我的脑海里的那片回忆就越来越清晰,心情也越来越沉重,呼吸也越来越无法自拔,对!这像是对初恋的表白。对!这根本无法自拔,情以难禁! 当思绪漂离到去年的国庆放假后的一天,这天的经历酿造出的煎熬是那么难忘得! 好吧,我今天就谈谈本人在腾讯面试的经历吧,面试的职位是深圳I原创 2015-09-21 21:34:36 · 464 阅读 · 0 评论 -
程序调试经验
现代由于有高级调试器,使得我们编程起来可以相当容易解决问题!但是如果是编写并发量大的服务程序,我们如何进行调试呢?在并发量高峰期才能体现出程序的健壮性?以下就是我调试程序的经验总结:1.对于服务端的进程如何进行判断服务端是否有内存泄露的情况,尽管我们会对内存进行优化和回收!在windows下我们可以打开任务管理器查看内存的情况,或者使用一些其他进程查看器,并且可以查看到cpu的使用情况原创 2015-09-15 21:40:24 · 572 阅读 · 0 评论 -
关于开发控制window 98的仪器总结
公司最近有一台windows 98的仪器,是安捷伦的,有相当的年代历史了,在资料上比较难收集,并且官方也明确说出了不再提供技术支持了(本人通过邮件联系官方得到了官方的回复),而且使用GPIB协议通信进行控制,对于这种协议还第一次接触,也没有现成的接口使用!面对这样的情况,我采取了以下的方法解决了:1.首先从提供设备的商家得到原始的第一份资料,该资料并不完整,但是可以发现多种线索,从而沿着线原创 2015-09-15 21:32:38 · 205 阅读 · 0 评论 -
静态库和动态库
今天见识了一份游戏源码的静态库乱使用导致N多Bug,使得修复难度可以说是一级棒!原来的游戏源码是定义了一个log类,里面有一份静态成员变量指针,在多个模块中使用这个log类,当每一个模块去使用的时候判断这个指针是否为空,为空表示未初始化则重新初始化,后面发现在.exe中初始化了这个成员指针,但是在其他模块又使用到这个log类,作者希望这个指针只初始化一次即可,但是未想到的是,这个成员变量在另外原创 2016-12-04 21:14:30 · 233 阅读 · 0 评论 -
Windows的全局名称锁与共享问题
1.CreateFileMapping2.CreateMutex如果名称相同的话会导致其中一个创建失败,所以需要注意原创 2016-12-21 14:32:42 · 417 阅读 · 0 评论 -
WIN7 内存溢出查看
直接观察提交大小看看是否有上涨的趋势原创 2017-01-09 20:16:15 · 952 阅读 · 0 评论 -
MVC真谛
v 天天变,c 升级一个版本策划改一次,m 变了游戏彻底需要颠覆修改了原创 2017-03-16 21:43:50 · 197 阅读 · 0 评论 -
dll 导出函数
今天在帮同事弄DLL导出的函数的时候,发现一个问题,因为他之前的函数有重载,我原计划希望他原来所有的函数都不动,而重载的函数都新建一个函数代替使用到,这样既保持了向下兼容向上扩展,例子如下:void Func1(int )void Func1(const char* )Func1 和Func1 是一对重载函数,我打算新建一个函数void Func1_New(const ch原创 2017-03-14 22:33:16 · 387 阅读 · 0 评论 -
vs INT8_MIN INT32_MIN 等警告消除
1>d:\microsoft visual studio 10.0\vc\include\stdint.h(72): warning C4005: 'INT8_MIN' : macro redefinition1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\intsafe.h(144) : see p原创 2017-03-07 22:49:10 · 3701 阅读 · 0 评论 -
C++ string 使用注意
今天在使用std::string 的find 成员函数的时候,发现find传入的参数如果是空字符串,返回值则是0,并不是string::nopos的值,例子:string szFind("123")string::size_type nType=szFind.find(string(""))nType=0原创 2017-03-09 21:00:04 · 650 阅读 · 0 评论 -
vs 正则
原文连接:http://www.cnblogs.com/zeq-jone/archive/2012/08/01/2618488.html用于“查找和替换”的正则表达式“表达式生成器”中经常使用的正则表达式如下所示。表达式语法说明示例任一字符.匹配除分行符外的任何一个字符。转载 2017-03-03 17:51:24 · 512 阅读 · 0 评论 -
程序Bug,卡爆的定位分析
最近这几天嵌入公司的算法库,发现程序会卡死现象,可是我个人的程序一直跑得很稳定,只是更新了新的算法sdk,导致程序卡爆了,但是有几个奇怪的现场1.在线跑的时候一下子就卡死了,导致程序无法进行,并且内存爆了2.离线跑的时候则可以顺利跑过问题就出在这,算法这块新算法是OK的,但是在线出问题则可能是程序是不是出现某些原因或者环境出了问题,通过各种定位,最后发现在vs F5调试则发现了算法原创 2017-02-23 00:17:15 · 559 阅读 · 0 评论 -
C++ rvalue赋值运算符定义
C++ 右值赋值运算符定义,这种操作符的函数在什么情况会发生呢?Obj a = 临时对象(这种临时对象一般是函数的返回对象,返回这个对象进行赋值然后销毁),所以这种是右值(rvalue),CObj& operator=(constCObj& cpy) 这个操作符是定义 =号的赋值CObj& operator=(const CObj&& cpy) 这个操作符是定义 =号的赋值,这个就原创 2017-01-20 23:57:35 · 679 阅读 · 0 评论 -
C++重载递增递减操作符谨记
const Obj operator++(int){Obj copy=*this;this->nData++;return copy}为什么返回const Obj ,防止编译类似Obj++++原创 2017-01-20 23:09:20 · 357 阅读 · 0 评论 -
C++赋值运算符谨记
obj& operator=(const obj& copy){if ( this=© )return *this;//没啥事也要加上..............................}原创 2017-01-20 22:56:21 · 272 阅读 · 0 评论