![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 83
fion45
没有想不到,只有做不到
展开
-
const的作用与解析
别人问起,不能简单说const表示常数,这样会让别人觉得很外行。或许可以说是只读,其实也不完全正确。务必要弄清楚一下几个定义的含义:const int a; //a是一个常整型数int const a; //a是一个整型常数const int *a; //a是一个指向常整型数的指针,从这里可以看出整型数不可以修改,但指针可以。int * const a;转载 2012-11-22 14:34:50 · 632 阅读 · 0 评论 -
端口扫描的方法
编写端口扫描器(C++)2007-12-13 14:47一、端口扫描器功能简介: 服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。 扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如转载 2013-05-03 08:45:16 · 5669 阅读 · 0 评论 -
AfxBeginThread,_beginthreadex与CreateThread的关系
首先推荐用_beginthreadex创建线程,原因请看下文转载AfxBeginThread在内部直接调用了CreateThread创建线程而不是c语言下推荐的beginthreadex函数,而这两个函数是有区别的,主要是c运行库的历史遗留问题造成的。在多线程环境中存在问题的C/C++运行期库变量和函数包括errno、_doserrno、strtok、_wcstok、strerror、转载 2013-07-26 11:31:56 · 1356 阅读 · 0 评论 -
windows资源管理(内核对象/GDI对象/user对象)
在使用c++进行windows编程时,程序员除了管理使用new/malloc动态在堆上分配出来的内存外,还需要对windows的内核对象、GDI对象和user对象进行管理,这些对象使用句柄来标识,通过操作这些句柄就使用不同的资源对象。和堆内存一样,程序员也需要管理这些对象资源,以免造成系统资源泄漏。 句柄(HANDLE)是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整转载 2013-08-14 17:32:55 · 1715 阅读 · 0 评论 -
程序里wstring,string和CString的Buffer里到底存的是什么(菜鸟问题)
真的很惭愧,竟然没搞懂“在程序里wstring,string和CString的Buffer里到底存的是什么”这种菜鸟级的问题分别在字符集为MuiltiByte和Unicode下的程序进行测试结果如下:MuiltiByte程序里int main(){string tmpStr = "abc";//MuiltiBytewstring tmpStr3 = L"abc";原创 2013-08-30 09:48:20 · 1250 阅读 · 0 评论 -
result_of,declval,decltype的用法
C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注。这次要讲的是:C++11如何通过获取函数模板的返回值类型来简化我们的程序。在谈到简化之前,我们先看一个问题,这个问题也是我前段时间在开发C++版本的linq时遇到的。假设我们现在需要将集合按某种属性分组,就是类似于sql语句中的group by,我们知道group by后面的字段会组成一个唯转载 2013-09-18 10:18:48 · 7665 阅读 · 1 评论 -
多种SOKECT通讯模型的理解(select,WSAAsyncSelect,WSAEventSelect,Overlapped I/O 事件通知,Overlapped I/O 完成例程,IOCP)
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解SocketI/O模型。 一:select模型 老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信,在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。转载 2013-10-10 08:35:33 · 6605 阅读 · 1 评论 -
163相册验证码图片的识别手记之一 --- 去除干扰
一.认识验证码图片下面提供几种163相册的验证码图片样例: 从上面的样例图中可知道163相册的验证码只是使用了平常所见的中规中距的0-9数字验证码和外加一些干扰措施,其中0-9数字图如下: 二.去转载 2013-10-17 08:45:06 · 1463 阅读 · 0 评论 -
在GitHub上分享和展示你的代码
先下载git preview上传分享代码1.在GitHub上建立项目登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击过后,填入项目名称、说明和网址过后就可以创建了,然后会出现一个提示页面,记下类似git@github.com:XXX/XXX.git的地址,这个就是你这个项目的地址了。2.配置Git以及上传代码安装Gi转载 2013-10-21 22:10:20 · 1556 阅读 · 1 评论 -
C++容器的注意事项
第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_mult转载 2013-11-01 17:35:45 · 1537 阅读 · 0 评论 -
VS2013编译64位OpenSSL
安装ActivePerl这个没什么好说的,直接运行msi即可。编译OpenSSL1.使用Visual Studio Tool中的“VS2013 x64 本机工具命令提示”来打开控制台;也可以打开一个控制台,然后进到“安装路径\Microsoft Visual Studio 12.0\VC\bin\amd64\“中运行vcvars64.bat;2.解压下载下来的ope转载 2014-10-11 22:45:45 · 19999 阅读 · 3 评论 -
C,C++表达式求值顺序(执行点,副作用)
最近这问题有从日经变时经的趋势,这里贴出裘老的解释。求加精。---------------------------------------------------------------------------------------------裘宗燕:C/C++ 语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m转载 2013-03-27 10:50:48 · 1026 阅读 · 0 评论 -
HeapAlloc, GlobalAlloc, LocalAlloc, VirtualAlloc, malloc, new的异同
1. 首先我们来看HeapAlloc:MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:LPVOIDHeapAlloc(HA转载 2013-03-27 10:20:50 · 654 阅读 · 0 评论 -
MFC 关键技术之永久保存
必须注意以下几点:1. 打开文件事件和写入文件事件必须在document类里里实现,如下:void CMageDoc::OnFileSave(){ if(m_savefilepath.IsEmpty()) { OnFileSaveAs(); } //else if(IsModified()) else if(true) { DoSave(m_savefilepath,原创 2013-03-26 17:27:38 · 1821 阅读 · 0 评论 -
C++里写日志很实用的宏
__FILE__ : 记录当前文件名称(全路径)__FUNCTION__ :记录当前函数名称__LINE__ : 记录当行数还有很多很实用的宏,如下:最后分享一个本人的日志记录DLLMacroDescription__DATE__The compilation date of the原创 2012-11-21 20:20:24 · 1231 阅读 · 0 评论 -
关键字 mutable (c++)
关键字 mutable 是一个奇怪的修饰符(specifier),它只能够用于一个类的非静态数据成员。下面我将讨论 mutable 的语义和用法,但是首先我要解释一下 C++ 对象模型的一个关键概念。对象的状态 一个对象的状态由其非静态数据成员的值构成,因此,修改一个数据成员将会改变整个对象的状态。将一个成员函数声明为 const 能够保证它不会改变对象的状态。 然转载 2012-11-22 14:27:44 · 468 阅读 · 0 评论 -
Visual leak detector用后感
http://vld.codeplex.com/(官网)安装和使用我就不多说了,网上随便一搜就是一大堆,这里我主要说自己使用后的感受。第一次接触可能还不是完全了解其功能,在我的项目里只是用来检测到程序结束后还有哪些堆空间没被释放。说一下用了之后的好处吧,没用前,程序内存基本上在120M以上,后来一个一个改了之后,内存基本上就是80,90左右。这真是挺令人兴奋的。这个工具还是在项原创 2012-11-23 09:10:06 · 606 阅读 · 0 评论 -
__stdcall,_cdecl,__fastcall,PASCAL 的调用方式
__cdeclC++void fun(int a) //默认__cdecl{ cout }int main(){ fun(3); system("pause"); return 0;}反汇编:void fun(int a){00D713A0 push ebp 00D713A1 mov转载 2012-12-26 17:31:35 · 546 阅读 · 0 评论 -
3种排序方法的对比(冒泡排序,快速排序,归并排序)
源代码地址:http://download.csdn.net/detail/fion45/49352461.快速排序参考自:http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用原创 2012-12-27 19:55:24 · 4070 阅读 · 0 评论 -
如何判断一个进程是否停止了响应(有对话框的)
简介:本文描述了使用C++、VB、Windows API和.Net类库如何判断一个进程是否停止了响应。没有一个明确的“停止响应”的定义,例如对于Internet Explorer或者Word 2000这样的多顶层窗口应用程序,可能存在部分顶层窗口失去响应的情况,这时很难定义应用程序是否停止了响应。但是一般来说,很多应用程序只有一个标志性窗口(或者叫主窗口)。如果主窗口在一段时间内不响应用户转载 2012-12-22 11:31:25 · 4214 阅读 · 0 评论 -
HASH原理
为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息转载 2013-01-17 16:20:43 · 670 阅读 · 0 评论 -
SetStretchBltMode的用法
设置设备拷贝图片时的默认缩放模式int SetStretchBltMode( __in HDC hdc, __in int iStretchMode);hdc: 需要更改模式的DC句柄iStretchMode: 缩放模式BLACKONWHITEPerforms a Boolean AND operation using the color va原创 2013-02-20 12:08:32 · 8425 阅读 · 1 评论 -
不要轻易使用TerminateThread中止线程
听过无数次不要TerminateThread,只是工作中常用,貌似也没有什么问题。今天在高强度测试中发现了一个不可原谅的错误。参看下面的例子DWORD __stdcall mythread(void* ){ while( true ) { char* p = new char[1024]; delete p; }转载 2013-02-22 16:03:31 · 2109 阅读 · 0 评论 -
四种强制类型转换 const_cast,static_cast,dynamic_cast,reinterpret_cast
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 d转载 2013-03-08 11:47:30 · 768 阅读 · 0 评论 -
禁用CMFCRibbonBar的按钮(变灰)
昨天很纠结,一直上网搜索如何令CMFCRibbonBar的按钮变灰,刚开始以为获得了按钮的指针,里面一定有方法或者接口达到我想要的功能,刚开始以为那些按钮和Checkbox等元素是我们普通的控件元素,谁知道用SPY++查了一下,这些都不是继承于CWnd的元素,只是一张一张的图片。后来在认真看了一下MSDN就写了如下代码获得里面的某一按钮元素。CArray arButtons;m_wndR原创 2013-04-02 14:43:44 · 6401 阅读 · 7 评论 -
编译OPENSSL动态库,最后的解决---感谢江南技术研究所赵春平的《openssl编程》
修改do_ms文件如下:perl util/mkfiles.pl >MINFOperl util/mk1mf.pl debug no-asm VC-WIN32 >ms/nt.makperl util/mk1mf.pl debug dll no-asm VC-WIN32 >ms/ntdll.makperl util/mk1mf.pl debug no-asm VC-CE >ms/ce转载 2014-10-14 23:29:56 · 3489 阅读 · 0 评论