
C++
文章平均质量分 83
程序猿凯撒
从事软件研发多年,2013年加盟南斗智拓,主持公司各项产品研发工作。从事软件研发多年,2013年加盟南斗智拓,主持公司各项产品研发工作。
展开
-
VS2015远程调试ASP.NET程序说明
VS2015远程调试ASP.NET程序说明问题背景一些复杂的多系统耦合的ASP.NET程序往往不便于,发布到服务器之后,可能有些bug本地调试不会出现或很难重现,这种情况下,通过输出日志,也可以确定问题原因,但总是不如直接调试代码来的快,通过VS2015的远程调试功能,可以实现远程调试已经部署到服务器上web程序。下面详述配置远程调试环境的步骤,配置好远程调试环境后,调试过程和本机调试基本一样。配置过程 配置服务端 安装VS2015的时候,同时安装了一个远程调试代理程序,在安装目录.原创 2021-01-14 14:56:59 · 651 阅读 · 0 评论 -
监控特定文件夹的事件:三种解决方法汇总
监控特定文件夹的事件:三种解决方法汇总 LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。对于目录事件异步通知,大致有三个方法:调用Windows的api函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO:http://msd转载 2009-01-07 14:08:00 · 1076 阅读 · 0 评论 -
unexpected user breakpoint in ntdll.dll
今天解决了一个困扰的很久的问题,debug状态下进程退出的时候总是出现一个莫名其妙的中断,看调用堆栈似乎是一个CALSS析构的时候释放内存出问题了,F5后可以继续退出,由于没有直接影响到用户的使用,就一直没有解决这个问题,今天有时间,搜了些资料,终于找到了一篇有价值的资料,按照说明设置好了环境一下就定位到出问题的点了,原因是程序退出的时候调用了一个appAuto->Revoke(); 该函数内部将原创 2008-10-21 11:35:00 · 1188 阅读 · 0 评论 -
Some of the best Open Source Project's in VC++ & MFC
原文: http://www.codeproject.com/KB/cpp/OpenSource_VC_MFC.aspxIntroductionList of some of the best Open Source projects written in VC++/MFC. BackgroundCodeproject has the best source code repos转载 2008-03-18 17:44:00 · 856 阅读 · 0 评论 -
单元测试工具 BoundsChecker 【转载】
单元测试工具 BoundsChecker 【转载】 BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。BoundsChecker能检测的错误包括:_a:Tv9FI01))1、指针操作和内存、资源泄露错误,比如:3`,e(G/[2H"H1n0内存泄露;/R(mA6UoYav0资源泄露;3sNews.Net——3S社区&资转载 2007-11-21 10:16:00 · 1277 阅读 · 0 评论 -
用VC6调试CGI程序
问题的起因前几天为了调试gsoap生成的server端代码(实际是一个cgi程序),一直没有找到好的调试方法,网上搜也没有找到一个切实可行的方法,于是分析了一下cgi的原理,终于找到一个调试CGI的办法。CGI程序的本质其实cgi就是一个没有界面的exe程序,cgi程序从stdin读取消息,从 stdout输出结果,一个cgi程序往往是部署在一个http server上,比如iis或a原创 2007-11-09 15:47:00 · 2033 阅读 · 0 评论 -
把Vim改装成一个IDE编程环境
转过来的,原文在:http://blog.youkuaiyun.com/wooin哪天有时间配置一下linux环境, 分析分析jabber服务器端的代码手把手教你把Vim改装成一个IDE编程环境(图文) 1 写在前面转载 2007-11-02 16:13:00 · 1761 阅读 · 1 评论 -
Oracle表数据的C/C++存取方法
Oracle表数据的C/C++存取方法 Pro C/C++ Pro C/C++是非常传统的接口,底层接口是 SQL-LIB,是一种在 C/C++代码里直接插入PLSQL语句实现oracle 数据库操作方法.虽然还是有很多公司依然采用这种接口方法,但是,一般来说,并不推荐,主要原因是,本身Pro C/C++有一套语法需要学习,另外,调试不便,多线程处理,多实例连接等情况,用起来比较复杂,而且不一定好转载 2007-10-16 18:15:00 · 1833 阅读 · 0 评论 -
从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
http://blog.youkuaiyun.com/optman/archive/2005/03/28/332277.aspx记得李久进的一本mfc的书里对这个问题也有过很深入的分析,时间久了就记不清楚了,无意中发现了这篇文章,短小精悍,转发到这里,以被不时之需.以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上AFX_MANAGE_STATE(AfxG转载 2007-10-10 11:24:00 · 848 阅读 · 0 评论 -
[转]VC使用CRT调试功能来检测内存泄漏
<br />VC使用CRT调试功能来检测内存泄漏<br />作者:JerryZ <br />C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种转载 2010-11-30 10:43:00 · 588 阅读 · 0 评论 -
vc调试窗口表达式格式化资料
<br />摘自msdn,列在这里方便查阅。<br />The following tables show the format specifiers recognized by the debugger.<br /><br />Specifier<br />Format<br />Expression<br />Value Displayed<br />d,i<br />signed decimal integer<br />0xF000F065, d<br />-268373915<br />u<br转载 2011-04-15 11:09:00 · 1161 阅读 · 0 评论 -
boost shared_ptr计数分析
boost::shared_ptrpFirst(new CTest(2)); boost::detail::shared_count pn; // reference counter template explicit shared_ptr( Y * p ): px( p ), pn( p )// Y must be complete {原创 2013-05-07 15:58:01 · 1504 阅读 · 0 评论 -
链接 CRT 库和 MFC 库 链接顺序问题
在一个原有MFC Dll项目中添加了两个CPP文件,由于新添加的CPP文件没有用到MFC,在工程中设置这两个CPP文件不使用预编译头文件。今天早晨clean后重新编译,出现”LNK2005:_DllMain@12 already defined"错误,之前也经常遇到类似问题,总是百度一下解决问题就不再深究,今天详细查阅了msdn的资料,基本上搞清楚了问题的缘由及解决方案。具体原因:CR原创 2013-04-03 10:46:23 · 1511 阅读 · 0 评论 -
二进制浮点数算术标准 IEEE 754
IEEE 754维基百科,自由的百科全书IEEE二进制浮点数算术标准(IEEE 754)是1980年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入转载 2013-03-14 10:10:34 · 4936 阅读 · 0 评论 -
Linux下显示加载动态库注意事项
Linux下显示加载动态库注意事项 最近将Windows上的若干个工程移植到Linux平台,exe工程通过显示加载的方式调用一个插件dll中的功能,在Windows平台上运行都很正常,但是在Linux平台上遇到一个很诡异的现象,在Linux平台显示调用插件dll(已经编译成so,为了描述方便,这里统一用动态库、DLL等window平台上的术语)中的函数时,发现一层层跟原创 2013-01-29 19:36:19 · 12665 阅读 · 0 评论 -
OD断点小结
OD断点小结 API断点 Ollydbg中一般下API中断的方法,有二种。 1. 在代码窗口中点鼠标右键,出现功能菜单。在[搜索]选择项下有〔当前模块的名称〕和〔全部模块的名称〕俩项,选择其中的一项就打开了程序调用 API的窗口,在这个窗口中选择你要跟踪的API函数名。双击这个函数就能到程序的调用地址处。然后用F2下中断。也可以在API窗口中选择需要跟踪的函 数点鼠标右键转载 2012-10-29 23:34:16 · 4557 阅读 · 0 评论 -
内联汇编中慎用eax,ecx,edx
#include "stdafx.h"#include #include #include // 测试vc6默认对寄存器保存情况:// ebp总是在函数开始push, ebx、esi、edi如果用到也会push, eax、ecx、edx则永远不pushint asm_add(int a, int b){__asm{mov eax, aadd原创 2012-09-10 14:51:09 · 4106 阅读 · 0 评论 -
翻译:理解COM套间(第一部分)
最近在写一个 oledb provider,涉及到线程套间的问题,搜到下面的文章,感觉说的透彻,转了过来。这个oledb provider是为了在asp.net程序中供ado.net使用,通过System.Threading.Thread.CurrentThread.Apar转载 2011-10-10 17:38:01 · 1001 阅读 · 0 评论 -
翻译:理解COM套间(第二部分)
转自:http://blog.sina.com.cn/s/blog_56dee71a0100ntr9.html英文原版:http://www.codeguru.com/cpp/com-tech/activex/apts/article.php/c5533/Understand转载 2011-10-10 17:39:45 · 932 阅读 · 0 评论 -
Windows系统程序设计之结构化异常处理
Windows系统程序设计之结构化异常处理2007-09-19 18:35 标 题: 【原创】Windows系统程序设计之结构化异常处理作 者: 北极星2003时 间: 2006-09-20,20:21链 接: http://bbs.pediy.com/showthread.p转载 2007-09-29 10:27:00 · 1439 阅读 · 0 评论 -
收发Jabber消息流程
1. 聊天对话框基本信息:1) 对话框模板: IDD_MSG2) 窗口过程: DlgProcMessage3) “发送”按钮: IDOK 在聊天对话框初始化的时候关于该联系人所用协议等信息已经做为该窗口的用户数据设置好了,用到的时候只要以GWL_USERDATA 为参数调用GetWindowLong就可以得到该用户数据的原创 2007-09-25 14:44:00 · 4632 阅读 · 0 评论 -
cgic: CGI的C函数库
下载回源码包以后,就3个文件:cgic.c 函数库capture.c 一个很简单的CGI例子,仅仅输出两行提示文字cgictest.c 一个演示读取form表单数据的CGI例子首先在vc6里创建一个空的win32静态库cgic,然后添加cgic.c,编译后得到cgic.lib库创建一个空的console工程cgictest,然后添加cgictest.c,在setting|lin原创 2007-08-24 16:38:00 · 10676 阅读 · 0 评论 -
STL序列式容器中删除元素的方法和陷阱 一
STL序列式容器中删除元素的方法和陷阱 一 在STL(标准模板库)中经常会碰到要删除容器中部分元素的情况,本人在编程中就经常编写这方面的代码,在编码和测试过程中发现在STL中删除容器有很多陷阱,网上也有不少网友提到如何在STL中安全删除元素这些问题。本文将讨论编程过程中最经常使用的两个序列式容器vector、list中安全删除元素的方法和应该注意的问题, 其它如queue、st转载 2007-02-07 15:15:00 · 1063 阅读 · 0 评论 -
The Complete Guide to C++ Strings, Part II - String Wrapper Classes
原文出处: http://www.codeproject.com/string/cppstringguide2.asp引言 因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串类,也不知道怎样把一个C风格的字符串转换成一个字符串封装类。 这篇文转载 2007-01-08 11:20:00 · 957 阅读 · 0 评论 -
C++ 程序文档生成器介绍(doxygen)
C++ 程序文档生成器介绍(doxygen) 程序文档,曾经是程序员的一个头痛问题。写一个程序文档,比较花时间,但不是很难;麻烦的是当程序修改后,程序文档也要跟着同步更新,否则文档和程序就要脱节,文档也就变成没用的东西了。好在有许多好用的文档生成器来解决这个问题。目前比较流行的C++文档生成器是doxygen。本文就简单的介绍一下doxygen的文档注释方法,以供初学者参考:C++ 程序文档生转载 2006-06-20 10:57:00 · 972 阅读 · 0 评论 -
C++编程人员容易犯的10个C#错误
我们知道,C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。尽管C#与C++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的C++编程人员时刻铭记在心。在本篇文章中我们将讨论C++编程人员最容易犯的十个错误。陷阱1: 没有明确的结束方法几乎可以完全肯定地说,对于大多数C++编程人员而言,C原创 2006-06-12 16:59:00 · 877 阅读 · 0 评论 -
网络编程之setsockopt
网络编程之setsockopt1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,siz原创 2006-05-30 17:17:00 · 2550 阅读 · 0 评论 -
Visual C++线程同步技术剖析
Visual C++线程同步技术剖析 (转载) 作者:中国电波传播研究所 郎锐■来自:yesky摘要: 多线程同步技术是计算机软件开发的重要技术,本文对多线程的各种同步技术的原理和实现进行了初步探讨。关键词: VC++6.0; 线程同步;临界区;事件;互斥;信号量; 正文 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进转载 2006-10-16 15:45:00 · 890 阅读 · 0 评论 -
getsockopt 和 setsockopt
getsockopt 和 setsockopt 获得套接口选项: int getsockopt ( int sockfd, int level, int optname, void * optval, socklen_t *opteln ) 设置套接口选项: int setsockopt ( int sockfd, int level, int optname, const void转载 2006-05-30 17:10:00 · 1515 阅读 · 0 评论 -
函数可重入性及编写规范
函数可重入性及编写规范一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时转载 2006-09-29 10:36:00 · 960 阅读 · 0 评论 -
STL序列式容器中删除元素的方法和陷阱 二
STL序列式容器中删除元素的方法和陷阱 二 2.使用STL中通用算法或容器成员函数删除元素的方法以上手工编写for循环代码删除容器中元素的方法也有一些问题,如果判断条件特别复杂,又有循环判断的话,循环中间又有异常处理的话,++itVect的位置就要小心放置了,稍不留意就要出错。所以手工编写代码删除容器中元素的方法不太安全,代码重复,也不够优雅,要注意的地方很多。对于这种情况,可以考转载 2007-02-07 15:18:00 · 999 阅读 · 0 评论 -
STL关联式容器中删除元素的方法和陷阱 四
STL关联式容器中删除元素的方法和陷阱 四 在STL(标准模板库)中经常会碰到要删除容器中部分元素的情况,本人在编程中就经常编写这方面的代码,在编码和测试过程中发现在STL中删除容器有很多陷阱,网上也有不少网友提到如何在STL中安全删除元素这些问题。上一篇文章主要讨论序列式容器vector、list中安全删除元素的方法和可能会遇到的陷阱,这一次讨论在map(multimap)容器中如何原创 2007-02-08 10:09:00 · 892 阅读 · 0 评论 -
关于二叉树操作的11个算法
#include #define STACK_MAX_SIZE 30#define QUEUE_MAX_SIZE 30#ifndef elemTypetypedef char elemType;#endif/************************************************************************//*转载 2007-04-19 11:14:00 · 1444 阅读 · 0 评论 -
Windows Socket API函数
Windows Socket API函数 一、WSAStartup函数int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData );使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函转载 2007-04-12 11:51:00 · 7094 阅读 · 1 评论 -
深入浅出C++中的引用
深入浅出C++中的引用引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名转载 2007-04-10 14:50:00 · 747 阅读 · 0 评论 -
gsoap + vc6 + client
1. 下载 gsoap_win32_2.7.9f.zip2. 准备gsoap环境,如下: E:./gsoap/│ soapcpp2.exe│ soapcpp2_for_client.bat│ soapcpp2_for_server.bat│ wsdl2h.bat│ wsdl2h.exe│ ├─import│ c14n.h│ dom.h│ ds.h│原创 2007-07-03 14:06:00 · 3406 阅读 · 0 评论 -
用_access判断文件或文件夹是否存在及其读写权限
摘自MSDN,以前一直没用过这个函数,今天调试程序发现了这个函数,感觉挺好用,尤其是判断一个文件或文件夹是否存在的时候,用不着再find了,文件的话还可以检测读写权限,文件夹的话则只能判断是否存在int _access( const char *path, int mode );Return ValueEach of these functions returns 0 if the f转载 2007-02-13 10:39:00 · 9043 阅读 · 3 评论 -
STL序列式容器中删除元素的方法和陷阱 三
STL序列式容器中删除元素的方法和陷阱 三 3.list容器中删除元素的方法对于list容器,由于list本身有remove和remove_if的成员函数,所以最好优先考虑list自己的算法,对于remove函数,比较简单,不再讨论,对于remove_if函数,本人发现在vc6.0中有重大问题。我试了多种函数对象,总是编译不过,通过查看源代码,才发现VC6.0中对remove_if()转载 2007-02-08 10:08:00 · 1258 阅读 · 0 评论 -
CMap使用自定义类的例子
//Sample Code : // This is a sample declaration of a CMap that uses a user-defined class for as data-type for a Cmap: #include class CEmployee :转载 2007-01-11 10:28:00 · 4022 阅读 · 0 评论 -
The Complete Guide to C++ Strings, Part I - Win32 Character Encodings
原文出处:http://www.codeproject.com/string/cppstringguide1.asp引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的转转载 2007-01-08 11:14:00 · 712 阅读 · 0 评论