C++
文章平均质量分 86
lougd
码农
展开
-
dll中的窗体设置xp风格
项目->属性,配置属性, c/c++, 命令行,附加选项, 输入: /D ISOLATION_AWARE_ENABLED原创 2014-08-14 11:06:51 · 683 阅读 · 0 评论 -
基于windbg的内存泄露分析
转自:http://www.cppblog.com/weiym/archive/2013/02/27/198109.html在前面C++中基于Crt的内存泄漏检测一文中提到的方法已经可以解决我们的大部分内存泄露问题了,但是该方法是有前提的,那就是一定要有源代码,而且还只能是Debug版本调试模式下。实际上很多时候我们的程序会用到第三方没有源代码的模块,有些情况下我们甚至怀疑系统模块有内存泄转载 2015-07-15 12:18:14 · 749 阅读 · 0 评论 -
Jsoncpp库的一个bug
Jsoncpp有个bug定义全局对象Value并赋值,类似下面这样,在程序退出的时候会崩溃。Value s_test;int WINAPI WinMain(HINSTANCE s, HINSTANCE p, char * cmd,int show){ s_test["aaa"] = 1;}原因是这里,在全局变量析构之前,这个静态变量已经析构了。static V原创 2015-06-05 15:04:25 · 2421 阅读 · 0 评论 -
代码管理的小技巧
陈灯可重用代码管理工具可以很好的对可重用的代码进行管理,这个工具配合360云盘的文件夹同步功能能够非常方便的将本地的工具随时备份到360云盘中。原创 2015-09-16 14:36:37 · 381 阅读 · 0 评论 -
string的内存管理问题
string的内存管理是通过只增不减的方式进行的,string的clear方法不会真正的释放内存,如果需要真正的释放内存可以连续调用string的这两个方法,resize(0), reserve()这样就能够真正的释放掉内存了。原创 2015-07-15 15:22:20 · 842 阅读 · 0 评论 -
windows窗口程序一个诡异的bug
今天开发一个带界面的小工具发现了一个诡异的bug,最后发现父窗口如果设置了EXSTYLE属性,子窗口的ListCtrl的LVS_EX_LABELTIP属性将会失效。原创 2016-01-20 12:17:38 · 461 阅读 · 0 评论 -
Windows64位API的改动,MARK
https://msdn.microsoft.com/en-us/library/aa383663(v=vs.85).aspx原创 2015-12-04 09:53:15 · 1250 阅读 · 1 评论 -
vs2008IDE查看宏展开后的方法
原创 2016-02-26 12:37:56 · 548 阅读 · 0 评论 -
通过windbg排查程序内存泄露
1.设置windbg工具内存跟踪gflags -i memtest.exe +ust2.运行一段时间通过调试器windbg attach中断输入命令 !heap -s输出类似:0:001> !heap -s3.过段时间再次中断输入!heap -s,查看增长明显的栈。4.查看栈情况!heap -stat h 004000005.查看堆详细信息!heap原创 2016-06-14 16:22:02 · 5317 阅读 · 2 评论 -
windbg设置双机调试的方法
windbg已不提供单独下载,wdk驱动开发工具包里附带有这个调试器.官网提供下载:http://msdn.microsoft.com/en-us/windows/hardware/gg487463.aspx1.#配置VMware工作站客户机(windows XP)0.为VMware工作站添加串口 右键setting,选择add,选择Serial Po转载 2016-07-01 11:17:03 · 6601 阅读 · 0 评论 -
ida配合windbg调试程序
ida是静态pe文件分析工具,有强大的汇编代码分析功能可以将pe文件的汇编代码近似还原成c语言代码,windbg是动态调试工具,运行时调试非常方便,对微软自家的pdb符号文件支持的很好,两个工具各有所长。 以下是ida和windbg代码对应的方法:1.ida中静态pe文件基址2.ida中winmain函数相对基址的偏移量3.windbg中模块运行后模块的基址4.在windbg原创 2016-07-28 11:23:54 · 5880 阅读 · 0 评论 -
ida手动加载指定模块的符号
ida手动加载指定模块的符号原创 2017-07-18 09:53:36 · 7582 阅读 · 0 评论 -
vs2008 F5调试慢的问题
在C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE文件夹中,新建symsrv.ini文件;[plain] view plain copy[exclusions] *.* 不加载文件;转载 2017-08-12 22:11:01 · 812 阅读 · 0 评论 -
一个奇怪的dll依赖问题
一个奇怪的dll依赖问题原创 2017-10-19 11:30:03 · 926 阅读 · 0 评论 -
后台进程windows窗口无法置顶的问题
后台进程在初始化的时候是无法通过设置顶层窗口弹到前台的,经测试,可以通过设置一个Timer,在Timer中通过SetWindowPos将对话框窗口拉到前台,先设置HWND_TOPMOST然后设置HWND_NOTOPMOST是为了将窗口弹到顶层但是不持续的在顶层。{ const static int s_timer = 11234; if (msg == WM_INITDIA...原创 2018-12-14 16:02:35 · 1030 阅读 · 1 评论 -
sdk改变ListCtrl某一行的字体颜色或者背景颜色
ListCtrl的字体颜色如果直接通过SetTextColour设置的话会改变所有行的字体颜色,sdk的对话框工程想要改变ListCtrl的某一行颜色需要注意一下几点:1.在ListCtrl的父窗口响应WM_NOTIFY消息。2.处理WM_NOTIFY的NM_CUSTOMDRAW消息,处理完之后通过SetWindowLong设置对话框返回结果。3.处理完返回结果后对话框的回调函数要返回原创 2014-11-25 16:21:02 · 1432 阅读 · 1 评论 -
vs2008远程调试
前提条件:remote host和client都在一个局域网内,且必须在一个网段remot host和client主机必须登录相同的用户,用户名必须一直关闭防火墙或打开相应的端口,一般是4015remote host和client的本地安全策略中的网络访问必须改为“经典,本地用户以自己的身份验证”,路径为控制面板->用户管理->本地安全设置->本地策略->安全选项->网络访问调试方转载 2015-03-12 13:40:39 · 321 阅读 · 0 评论 -
关于lstrcpyn与strncpy的一点区别
关于lstrcpyn与strncpy的区别原创 2015-03-06 11:01:21 · 1000 阅读 · 0 评论 -
堆损坏异常调试
今天调试一个bug,用pageheap解决,在此记录一下。bug症状如下:1:不确定性崩溃,用vs调试启动每次崩溃地点都在crt分配或者释放堆的位置2:崩溃时vs看到的调用栈可能不同3:output输出HEAP: Free Heap block 388c58 modified at 388c88 after it was freed问题分析:根据vs的输出,转载 2014-10-22 15:18:34 · 4474 阅读 · 0 评论 -
关于DialogBox的使用
在dll中调用DialogBoxA要注意,DialogBoxA的第一个参数是原创 2014-11-12 21:25:00 · 4459 阅读 · 0 评论 -
程序异常时通过dump文件记录下异常的详细信息
在开发过程中j原创 2014-10-30 15:14:44 · 4197 阅读 · 0 评论 -
完全隐藏对话框
在WM_INITDIALOG消息里通过原创 2014-11-18 11:47:14 · 593 阅读 · 0 评论 -
关于全局事件的使用
windows创建一个时间的时候这个事件命名那么这个事件原创 2014-11-19 16:20:53 · 1272 阅读 · 0 评论 -
LIBCMT.lib与msvcrtd.lib冲突的链接错误
LIBCMT.lib与msvcrtd.lib冲突的lianjiech当然,如果不把tinyxml.lib库添加进去,只是外部符号无法解析(用到外部类库的类文件,不添加当然是无法解析的啦)错误如下:1>正在链接...1>BuildEngine.obj : error LNK2019: 无法解析的外部符号 "public: bool __thiscall TiXmlDocument转载 2014-10-21 14:39:39 · 533 阅读 · 0 评论 -
TCP的各种状态
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。 其中,ACK是可能与SYN,FIN等同时使用的转载 2015-01-07 09:14:45 · 629 阅读 · 0 评论 -
一个小函数,实现通配符*和?的字符串匹配。
实现通配符*和?的小程序?BOOL WINAPI FuzzyMatch(const char *src, const char *dst){ int itm = 0; int itn = 0; int tmp_a = 0; int tmp_b = 0; if (0x00 == src[0]) { return TRUE; } while(src[itm] && dst原创 2014-11-17 17:11:10 · 2803 阅读 · 0 评论 -
程序员进阶
12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历,我在把他的转载 2014-12-09 14:17:37 · 646 阅读 · 0 评论 -
wireshark过滤规则总结
1. 过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP2. 过滤端口例子:tcp.port eq 80 // 不管端口是来源的还是目标的都显示tcp.port == 80转载 2014-12-31 11:17:36 · 522 阅读 · 0 评论 -
windbg调试死锁问题
操作系统对死锁的描述如下:所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 那么为什么会产生死锁呢?1.因为系统资源不足。2.进程运行推进的顺序不合适。 3.资源分配不当。 而产生死锁的条件有四个:1.互斥条件:所谓互斥就是进程在某一时间内转载 2015-01-05 13:22:23 · 648 阅读 · 0 评论 -
一个清理VS工程的小工具
VS工程编译完之后会产生大量的临时文件,这个小程序就是清理VS工程残留文件的,能迅速清理VS的工程,如果有子文件夹递归进行清理,程序使用多线程效率很高。原创 2014-12-31 20:47:04 · 887 阅读 · 1 评论 -
Reactor和Proactor模式
首先分享一下,我在网上看到的两篇不错的文章:正是这两篇文章才理解了reactor和proactor模式; Reactor模式,或者叫反应器模式高性能IO设计的Reactor和Proactor模式 首先就第一篇《Reactor模式,或者叫反应器模式》做一下笔记: 刚开店做生意,老板为了给顾客一个美好的印象,给顾客最好的服务,一对一: 随转载 2015-03-04 11:58:52 · 385 阅读 · 0 评论 -
动态链接库延迟加载
开发的时候遇到一个问题,有一个可执行程序需要依赖另外一个目录的动态库,但是对这个dll接口的引用采用的是静态依赖的方式。解决不难,可以通过LoadLibrary动态加载,然后调用其接口。但是这用就没法方便的通过静态以依赖的方式方便的调用其接口了。 探索后发现vs支持延迟绑定。。。就是调用的时候可以通过静态依赖的方式进行调用,但是pe导入表不再依赖调用的dll,在需要使用该dll的时候再动态加载...原创 2018-12-24 18:39:01 · 597 阅读 · 0 评论