- 博客(40)
- 收藏
- 关注
原创 运行时刻错误:DAMAGE: After normal block
这样的错误主要是由内存越界操作导致堆栈被破坏引起的,我有一次申请了x大小的内存,却写入了x+y (y>0)的数据,结果导致了这样的错误。由于错误发生的地点与导致错误发生的地点并一定相邻,导致查找错误很困难,对于内存一定要小心再小心。其实大多数莫名其妙的错误都是由内存越界操作引起的
2006-12-23 18:28:00
1752
原创 下划线开头的函数的含义
_snprintf, _stricmp等函数是下划线开头的,下划线开头表示这些函数是MS扩展的,如果一个函数有两个版本一个是带下划线的,一个是不带的,那么不带下划线的是ANSI版本,带下划线的是编译器厂商扩展的版本
2006-12-23 18:27:00
5932
1
原创 理解ATL中的关键点
ATL中存在大量的宏,咋一看头都大了,但是还是有规律可循的,关键是要抓住两张表。其一是对象表,它由下面的一组宏来定义:BEGIN_OBJECT_MAPOBJECT_ENTRYEND_OBJECT_MAP这一组宏定义了COM对象表,通过这张表,COM很容易的根据CLSID创建相应的COM对象。另一张表是接口表,由下面一组宏来定义:BEGIN_COM_MAPCOM_INTE
2006-12-23 18:25:00
1004
原创 malloc(0)的问题
以下代码执行异常:int main(){ char *p = 0; p = (char*)malloc(0); *p = 0; free(p); return 0;}分配长度为0的内存是成功的,但有效内存长度为0,对它进行写,自然越界了,导致堆栈被破坏,错误提示为DAMAGE: after normal block。只要看到这个异常,大致可以确认为是内存越界写了。
2006-12-23 18:23:00
1251
2
原创 窗体的背景色和文本的背景色
在注册一个窗口类时,可以设置该类窗体的的背景刷,在需要擦除窗体的客户区时,系统会用这个背景刷来擦除。使用Textout函数向窗体输出文本时,文本有个背景色,文本的背景色可以用setbkcolor来设定。注意文本的背景色与窗体的背景刷是不同的,背景刷针对整个窗体,文本背景色针对窗体上显示的文本,是两个不同的概念。当背景刷的颜色与文本的背景色的颜色不同时,可能显示的效果会有闪烁。
2006-12-23 18:19:00
1078
原创 透明背景理解
我们可以知道Icon一般是透明的,实际上Icon的形状是矩形的,为什么我们看不到icon的矩形边界呢,就是因为icon是底色透明的。构成icon的矩形中我们看不到的部分就是使用的透明色。CDC类有个成员函数SetBkMode(int nBkMode),这个nBkMode有可以有两个值,分别是OPAQUE和TRANSPARENT。它们的含义如下:OPAQUE:Background is fill
2006-12-23 17:03:00
1333
转载 Debugging the release version of a program
转自:www.codeguru.com Something a lot of programmers dont know is that you can debug the release version of a program as easy as the debug version. I didnt know this until Ive read John Robbins
2006-11-25 12:35:00
772
原创 如果动态使用平台提供的API
开发工具的安装目录下会有include,lib目录,这两个目录下存放着OS提供的API的声明以及经过封装的一些类以方便程序员开发,封装的类提供的服务大多通过调用OS的API来实现,而真正提供OS的API实现的却在一个个dll中。我们想要使用这些API或经过封装的类的服务时,一般做法如下://test.cpp#include#param comment (lib, "xxx.lib")
2006-10-20 17:15:00
784
原创 如何快速定位死循环的发生地点
如何快速定位死循环的发生地点1. 找到发生死循环的线程,可以通过procexp工具来查看2. 调试模式下执行发生了死循环的进程-F5或把该进程挂载到调试器3. 待进程进入到死循环后,break进程4. 查看发生了死循环的线程当前的执行点,现在已经进入到了死循环内部了。 参考:http://blog.youkuaiyun.com/freefalcon/archive/20
2006-10-15 17:10:00
3570
原创 复杂的函数指针解析
关于函数指针的讨论见下面的链接 http://topic.youkuaiyun.com/t/20030624/20/1952957.html
2006-10-05 19:23:00
1145
原创 BSTR类型解析
BSTR类型在COM中是一个非常重要的字符串类型。(一)BSTR的定义 typedef WCHAR OLECHAR; typedef OLECHAR* BSTR; (二)管理BSTR的API:(A)创建一个BSTR BSTR SysAllocString( const OLECHAR * sz ); BSTR SysAllocStri
2006-09-27 15:42:00
2382
转载 Browsing Performance Counters
转自:http://windowssdk.msdn.microsoft.com/en-us/library/ms711775.aspxPerformance CountersBrowsing Performance CountersThe following example shows how to call PdhBrowseCounters to browse perfor
2006-09-26 16:20:00
1315
转载 Understanding User-Agent Strings
转自:http://msdn.microsoft.com/workshop/author/dhtml/overview/aboutuseragent.aspThis topic describes the user-agent string, which identifies your browser and certain system details to servers hosting
2006-09-26 14:36:00
1638
转载 流氓软件及反流氓软件的技术分析
转自:http://blog.youkuaiyun.com/jacklzw88/archive/2006/09/20/1252649.aspx流氓软件的技术五花八门,任何一项功能都有可能成为流氓技术,就象武器,用好了可以伸张正义,用歪了却成为罪恶的帮凶。首先我从win32下的一些流氓着数分析开始:1。我想做为一个流氓软件,首先要做到的是实时运行,譬如在注册表的run下,在boot下增加它的启动。这应该是比
2006-09-24 13:33:00
1068
转载 字符串hash算法比较
转自:http://blog.iyi.cn/tech/2005/11/字符串hash算法比较1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无
2006-09-22 18:03:00
1601
转载 使用流加载和保存HTML内容&遍历html的信息存入一个ini文件&使用MSHTML分析HTML代码
使用流加载和保存HTML内容&遍历html的信息存入一个ini文件&使用MSHTML分析HTML代码使用流加载和保存HTML内容 本文的部分内容翻译自MSDN文章Loading HTML content from a StreamIPersist* 接口,以及它的附属方法,可以被用于Microsoft® Visual C++® 和 WebBrowser 控件使用流载入和保存HTML内容本文讨论
2006-09-19 19:53:00
1486
转载 IE 控件一些高级使用方法
IE 控件一些高级使用方法作者:杨老师下载源代码本文介绍如下内容1、如何显示内存中的 HTML 网页;2、如何屏蔽掉鼠标右键的上下文菜单;3、如何扩展 HTML 中的脚本(external)对象;4、如何显示 HTML 样式的对话窗;5、如何执行 HTML 脚本;一、如何显示内存中的 HTML 网页 或者因为网页保密的考虑;或者因为软件分发的考虑,有的时候就需要让 IE 或 IE 浏览器控件
2006-09-19 19:51:00
1170
转载 Asynchronous Pluggable Protocol
This article was contributed by Dave StoneIntroductionLike most people who contribute, I think its a part of wanting to contribute something back into the system. However, Ive always felt that p
2006-09-19 19:50:00
1514
转载 网页源码过滤
本例通过Mime filter技术对网页源码进行过滤,本文部分摘自《HTML代码过滤技术》 要实现HTML代码过滤必需注册一个或多个MIME过滤器(Pluggable MIME Filter)。MIME过滤器是一个COM对象,必需实现IInternetProtocolSink和IInternetProtocol接口。 在实现MIME过滤器对象之前,先看一下
2006-09-19 19:49:00
1311
转载 HTML代码过滤技术
参考资料:MSDN的《Pluggable Protocols Overview》参考示例:MSDN提供的 http://support.microsoft.com/default.aspx?scid=kb;EN-US;q260840#appliesto 另一示例是用Delphi写的:http://www.guicode.com/scr/mimefilter
2006-09-19 19:47:00
1716
转载 Browser Helper Objects: The Browser the Way You Want It
转自: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/bho.aspDino EspositoMicrosoft CorporationJanuary 1999April 9, 2004 security update: Please also see Security Co
2006-09-18 17:32:00
1743
转载 向其他进程注入代码的三种方法
转自:http://ww2.98exe.net/Article/a/200507/1187.html 本文章翻译自Robet Kuster的Three Ways to Inject Your Code into Another Process一文,原版地址见下面。本文章版权归原作者所有。 如果转载该译文,请保证文章的完整性,并注明来自www.farproc.com袁晓辉 2005/
2006-09-15 17:23:00
741
转载 纵谈进程枚举
转自:http://www.blog.edu.cn/user2/33587/archives/2005/254906.shtml代码下载:说明 ProcessSpy.zip当程序出现异常而失去响应,我们通常的做法是打开Windows任务管理器强行将其“杀死”。Windows任务管理器是个好东西,它能显示当前系统中运行的所有进程,以及它们的实时性能参数。但是作为程序员,你知道这些功能是怎么
2006-09-15 17:17:00
2592
1
转载 界面规范
转自:http://www.cnblogs.com/jiezhi/archive/2005/03/14/118531.html在参考了很多资料后,整理出来的一份界面规范(是c/s程序的,但其中的原则部分对任何界面都是具有参考价值的),希望能给大家带来帮助。 其中的图片没有贴上来,因为文字已经足够描述清楚了。 ------------------------------------- 1.
2006-07-17 09:59:00
1415
原创 C++字符串完全指南
本文转自:http://largedong.bokee.com/3263289.htmlC++字符串完全指南(转载) C++字符串完全指南 - Win32字符编码(一) 前言字符串的表现形式各异,象TCHAR,std::string,BSTR等等,有时还会见到怪怪的用_tcs起头的宏。这个指南的目的就是说明各种字符串类型及其用途,并
2006-07-04 13:26:00
1032
原创 2006年Q2项目总结
1.需求阶段积极投入,对任何细节都不要放过。技术调研要抓准难点,先分析都有那些难点并列出逐个解决2.设计阶段在设计时要考虑设计目标,只有在设计目标明确的前提下,设计才有意义。设计时,对于极限的情况要重视。要把自己的设计记录到文档中,不要只是凭记忆。在设计这个阶段,要花大力气。尽可能的把问题都在设计阶段解决,要是在编码,测试发现问题,修改的代价太高。MRD要成为设计的最重要的参考文档,要把它打印
2006-06-17 15:05:00
1144
转载 如何把SEH类型的系统异常转化为C++类型的异常
在上一篇文章中,详细讨论了“ SEH 与 C++ 异常模型的混合使用”,这一篇文章中,主人公阿愚仍将这一主题继续深入,那就是“如何把 SEH 类型的系统异常转化为 C++ 类型的异常?”(其实,这本质上仍然属于 SEH 与 C++ 异常模型的混合使用,也即 C++ 异常模型来捕获 SEH 系统类型的异常)。为什么要 把 SEH 类型的系统异常转化为 C++ 类型的异常? 做一件事情之前,我
2006-05-11 19:54:00
1866
转载 SEH 可以在 C++ 程序中使用
转载自http://blog.programfan.com/article.asp?id=9864首先声明的是, C++ 中的异常处理机制是建立在 Windows 平台上的 SEH 机制之上,所以 SEH 当然可以在 C++ 程序中使用。不过“阿愚”多次强调过,我们平常一般狭义上的 SEH 都是指 try-except 和 try-finally 异常机制,而它们是给 C 语言( VC 环境)
2006-05-11 19:53:00
2163
转载 SEH 与 C++ 异常模型的混合使用
转载自-http://blog.programfan.com/article.asp?id=9865在上一篇文章中我们看到了,在 C++ 程序中可以能够很好地使用 SEH 的 try-except 和 try-finally 机制(虽然 MSDN 中不建议这样做),这一篇文章中我们继续讨论,在 C++ 程序中同时使用 try-except 异常机制( SEH )和 try-catch 异常机制
2006-05-11 19:53:00
3278
转载 SEH的综合
转载自http://blog.programfan.com/article.asp?id=9840SEH模型主要包括try-except异常处理机制和try-finally结束处理机制,而且这两者能够很好地有机统一起来,它们结合使用时,能够提供给程序员非常强大、非常灵活的控制手段。其实这在上一篇文章中的几个例子中已经使用到,这里将继续进行系统的介绍,特别是try-except和try-fina
2006-05-11 19:52:00
1506
转载 SEH的强大功能之二
转载自-http://blog.programfan.com/article.asp?id=9839上一篇文章讲述了SEH的异常处理机制,也即try-except模型的使用规则。本篇文章继续探讨SEH另外一项很重要的机制,那就是“有效保证资源的清除”,其实这才是SEH设计上最为精华的一个东东,对于C程序而言,它贡献简直是太大了。 SEH的这项机制被称为结束处理(Termination Han
2006-05-11 19:51:00
1545
转载 SEH的强大功能之一
从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH的学习过程和经验总结。 SEH有两项非常强大的功能。当然,首先是异常处理模型了,因此,这篇文章首先深入阐述SEH提供的异常处理模型。另外,SEH还有一个特别强大的功能,这将在下一篇文章中进行详细介绍。t
2006-05-11 19:50:00
1716
转载 更进一步认识SEH
转载自-http://blog.programfan.com/article.asp?id=9837上一篇文章阿愚对结构化异常处理(Structured Exception Handling,SEH)有了初步的认识,而且也知道了SEH是__try,__except,__finally,__leave异常模型机制和try,catch,throw方式的C++异常模型的奠基石。 为了更进一步认识S
2006-05-11 19:49:00
2062
转载 Windows系列操作系统平台中所提供的异常处理机制
转载自-http://blog.programfan.com/article.asp?id=9836大家现在知道,在C++中有完善的异常处理机制,同样在C语言中也有很不错的异常处理机制来支持,另外在其它许多现代编程语言中,也都有各自的异常处理编程机制,如Ada语言等。那么为什么现在此处还在讨论,操作系统平台中所提供的异常处理机制呢?这是因为在许多系统中,编程语言所提供的异常处理机制的实现,都是
2006-05-11 19:48:00
3314
原创 WM_COPYDATA的实现原理
WM_COPYDATA是一种非常简单的进程间通信的方式,很容易实现。下面是一个使用WM_COPYDATA来实现进程间通信的一个例子。发送端,接收端的例子代码摘自 http://blog.youkuaiyun.com/111222/archive/2001/10/10/7241.aspx发送端:HWND hWnd = FindWindow(NULL,"MyApp");if(hWnd!=NULL)
2006-04-28 18:41:00
4659
2
转载 一些VC的快捷键以及调试方法技巧
--------------------------------------------------------------- http://search.youkuaiyun.com/expert/topic/50/5001/2003/3/12/1519306.htm ---------------------------------------------------------------
2006-03-07 17:43:00
1525
原创 类型强制转换的危险
在类型强制转换时一定要注意:是否丢失了数据,是否可能存在非法访问,当你对回答了这两个问题后,并确定能够控制所有可能发生的情况时,大胆的强制类型转化吧,这是指程序员自己作强制类型转化的情况,如果程序员调用系统的函数或宏,而系统的函数和宏做了某种强制类型转化,而用户由于对系统的函数和宏了解的不够而不知道存在强制的类型的转化,这就危险了。所以在调用系统的函数或宏时,多留点心眼吧。这里需要特别指出的函数也
2006-01-07 16:23:00
1259
原创 多线程程序设计的相关问题(转载)
多线程程序设计的相关问题一、 什么是进程?什么是线程?进程是一大堆系统对象拥有权的集合。如进程拥有内存上下文,文件句柄,可以派生出很多线程,也可以拥有很多DLL模块。在windows系统中,进程并不完成实质的工作,只是提供一个相对独立的运行环境,线程才是完成实际工作的载体。线程从属于进程,共享进程所拥有的系统对象。线程是操作系统调度的单位。实质上,线程就是一段可执行代码。采用多进程的优点和缺
2005-12-06 20:10:00
1289
原创 c和cpp混合编程-link error_link 2001_unresolved symbol
当一个工程中既有c文件又有c++文件时,c++文件里有调用c文件中定义的函数或使用其全局变量时:例如在c文件中定义了一个变量和一个函数:/*test.c*/ ......int test;int test(){printf("test"):return 1;}......在另一个c++文件中引用上面c文件定义的全局变量和函数/*test.cpp**/......extern int test;ex
2005-06-10 09:33:00
2006
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人