
C++基础
文章平均质量分 81
brk1985
这个作者很懒,什么都没留下…
展开
-
VS错误总结(部分)
1、问题1 1>fatal error C1900: “P1”(第“20080116”版)和“P2”(第“20070207”版)之间 Il 不匹配1>LINK : fatal error LNK1257: 代码生成失败 解决:安装VS2008 SP1.原创 2017-05-29 14:16:34 · 2656 阅读 · 0 评论 -
笔试题:GetMemory()函数
void GetMemory(char *p){ p=(char *)malloc(100);}void Test(){ char *str=NULL; GetMemory(str); strcpy(str,"Helloworld"); printf(str);} 实质:GetMemory(str)在调用时会生成一个_str与str指向转载 2016-03-10 19:18:35 · 2677 阅读 · 0 评论 -
MFC消息映射机制
消息机制看了很多遍,每次看了忘,以下写的很好,转帖如下。消息映射可以说是mfc框架的精华部分,但就是一层窗户纸,捅不破,你就看不清楚里面是什么,但是只要你看到,伸手捅,你会觉得就这么简单。闲话少说。首先要问下你,对win32下编程是否清楚,win32下如果要创建一个窗口的步骤你了解吗?MFC窗口创建的步骤和win32创建窗口的步骤是相同的,而且,注意,是确定的。我先来说转载 2016-03-05 21:07:33 · 474 阅读 · 0 评论 -
线程间的通信
线程间的通信1.线程之间的通信简介一般而言,在一个应用程序中(即进程),一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务。如主线程和次线程,次线程与次线程,工作线程和用户界面线程等。这样,线程与线程间必定有一个信息传递的渠道。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的。线程间的通信涉及到4个问题:(1) 线程间如何传递信息(2) 线程转载 2016-03-05 20:55:46 · 445 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
注:本文内容来源于zhice163博文,感谢作者的整理。1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码#includeusing namespace std转载 2016-03-05 20:41:39 · 325 阅读 · 0 评论 -
在Win32下用C++实现多线程读写锁
读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。 现在Win32的API转载 2014-01-18 15:31:38 · 857 阅读 · 0 评论 -
炫彩界面库v1.4.2-360安全卫士v8.5-UI设计器使用教程
炫彩界面库-UI设计器使用教程,该教程以360安全卫士为例.先上一张最终程序截图文件相对路径 -说明文件的相对路径为UI设计器的路径;例如在UI设计器目录中有个UI项目文件夹[MyProject], 在项目文件夹中有个图片文件夹[image],在图片文件夹中有个按钮图片[button.png],那么图片的相对路径为:MyProject\image\button.pn转载 2016-03-05 00:58:57 · 1806 阅读 · 0 评论 -
DirectUI 2D/3D 界面库集合 分析之总结
详细界面库列表见http://home.pacbell.net/atai/guitool/如何选择界面库产品易用性是否容易整合到现有应用程序中?是否容易在新的应用程序项目中应用?开发人员能否及时掌握并使用 产品稳定性是否有足够多的示例演示控件库各个方面的功能特性 是否有众多的成功案例 是否一直有持续更新 界面库高效性拖拽窗口,观察是否有明显的停顿转载 2016-03-05 00:44:36 · 1507 阅读 · 0 评论 -
SIP协议与视频监控
我们知道SIP协议,在VoIP中有着广泛的应用。其实,在视频监控中,它也有着重要作用。随着网络带宽、计算机处理能力和存储容量的迅速提高以及各种实用视频信息处理技术的出现,视频监控朝网络化、智能化方向不断发展。大型联网安全与视频监控平台在城市公安、交通、金融、环保、电力、医疗、教育、电信等管理部门对城市范围内的监控需求增长的同时也在这两年开始大量增加,其中尤其以城市公安和电信的需求最为突出。转载 2016-03-05 00:35:08 · 1811 阅读 · 0 评论 -
小技巧、小经验
1、支持ActiveX,调整IE浏览器安全级别REM ActiveX的注册表项REM 值 设置 REM ------------------------------ REM 0 我的电脑 REM 1 本地 Intranet 区域 REM 2 受信任的站点区域 REM 3 Internet 区域 REM 4原创 2015-07-22 18:06:39 · 820 阅读 · 0 评论 -
如何定位导致Crash的代码位置
1. 在开发环境下定位Crash错误 1.1 普通的crash 1.2 较难定位的crash 1.3 注意vc的输出日志2. 定位发布在外的版本的Crash错误3. 小技巧 3.1 根据程序地址找到代码位置 3.2 根据消息值查看对应的windows消息 3.3 查看GetLastError返回值 3.4 在代码中暂停程序4. 编程小警示转载 2015-12-29 16:37:33 · 1051 阅读 · 0 评论 -
socket编程的select模型
http://www.cnblogs.com/RascallySnake/archive/2013/07/11/3185071.html 在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个转载 2015-11-23 08:47:02 · 470 阅读 · 0 评论 -
c语言结构体中的冒号的用法
结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允转载 2015-09-18 09:04:50 · 528 阅读 · 0 评论 -
Sip响应状态码功能对照详解
SIP应答消息状态码与类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 queue 排队181* session progress 会话进行会话成功(2XX) 200 OK 会话成功重定向(3XX) 300 multiple 多重选择30转载 2015-09-25 15:49:20 · 2656 阅读 · 0 评论 -
C++ 11智能指针之shared_ptr
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以像普通指转载 2015-08-27 11:01:33 · 713 阅读 · 0 评论 -
一则简单的Windows共享内存IPC代码
Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。//a.cpp#include #include #转载 2016-02-25 16:45:51 · 1345 阅读 · 1 评论 -
小技巧、小经验(2)
(1)、使用回调接口实现ActiveX控件和它的容器程序的通讯 http://blog.youkuaiyun.com/clever101/article/details/5649489原创 2015-12-24 09:38:51 · 556 阅读 · 0 评论 -
多线程和多进程的区别
http://blog.youkuaiyun.com/hairetz/article/details/4281931/一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()到底的代码的人,那么或多或少你会遇到代码响应不够用的情况,也应该有尝过并转载 2016-03-14 01:17:06 · 401 阅读 · 0 评论 -
小技巧、小经验(5)
1、VC控制EXCEL的基本操作之选择范围篇 http://blog.youkuaiyun.com/shuilan0066/article/details/79363762、VC控制EXCEL的基本操作之设置篇 http://blog.youkuaiyun.com/shuilan0066/article/details/7936383原创 2017-03-30 20:55:19 · 513 阅读 · 0 评论 -
初探nginx架构(100%)
众所周知,nginx性能高,而nginx的高性能与其架构是分不开的。那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧。nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方转载 2017-04-19 14:31:25 · 3722 阅读 · 0 评论 -
小技巧、小经验(4)
1、InterlockedIncrement和InterlockedDecrement的妙用一般来说,在多用户线程环境中,我们使用临界区、事件对象甚至互斥量来进行同步,尤其是临界区,可以很方便地对某些变量甚至代码块进行锁定执行,防止多线程之间资源恶性抢夺。既然如此,为啥微软又单独提供了专用于一个数值锁定计算的API函数InterlockedIncrement和InterlockedDecrem原创 2016-10-19 21:40:55 · 1016 阅读 · 0 评论 -
解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用中,对可靠性和效率的转载 2017-01-16 16:13:20 · 382 阅读 · 0 评论 -
C++时间函数用法总结(部分)
1、获取1970以来的时间戳#include "stdafx.h"#include #include #include using namespace std; int main() { long long time_last; time_last = time(NULL); cout<<time_last<<endl; //1970时间戳秒数方法原创 2016-11-02 21:48:27 · 4199 阅读 · 0 评论 -
C++ sscanf()用法总结
1. 常见用法[cpp] view plain copy print?sscanf("123456 ", "%s", str); 2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。[cpp] view plain copy print?sscanf("123456 ", "%4s", str); 3. 取到指定字符为止...转载 2016-11-18 14:56:06 · 2383 阅读 · 0 评论 -
C++ RegSetValueEx返回值始终为5
5即ERROR_ACCESS_DENIED,意思是访问被拒绝。网上看到的说法是Win7权限不足。但是我这边的UAC早就设置为“从不”了。后来想着有时候360每次会提示是否允许注册表修改,而我今天允许都没提示,就想到是否被360禁了,果然,只要把exe程序添加为信任程序,RegSetValueEx返回值就正常了。原创 2016-10-19 19:48:01 · 7087 阅读 · 0 评论 -
小技巧、小经验(3)
1、多态作用:多态的意义在于,它实现了接口重用(同一的表达式),接口重用带来的好处是程序更易于扩展,代码重用更加方便,更具有灵活性,也就能真实地反映现实世界。原创 2016-03-13 21:31:02 · 694 阅读 · 0 评论 -
C++中的容器类详解
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。1、vector 连续存储结构,每个元素在内存上是连续的; 支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操转载 2016-09-21 13:47:40 · 311 阅读 · 0 评论 -
C++递归创建多级目录
需要#include ,并且配置好shlwapi.ibBOOL CreateDirTree( LPCTSTR lpPath ){ if( NULL == lpPath || _tcslen(lpPath)==0 ) { return FALSE; } if( ::PathFileExists( lpPath) || ::PathIsRoot(lpPath) ) retu原创 2016-04-11 16:59:04 · 4529 阅读 · 0 评论 -
Linux C++ 服务器端这条线怎么走?
既然你是在校学生,而且编程语言和数据结构的基础还不错,我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫,然后才去读编程方面的 APUE、UNP 等书。下面简单谈谈我对学习这两门课的看法和建议,都是站在服务端程序员的角度,从实用主义(pragmatic)的立场出发而言的。学习操作系统的目的,不是让你去发明自己操作系统内核,打败 Linux;也不是成为内核开发人员;而是理解转载 2016-03-26 21:39:04 · 655 阅读 · 0 评论 -
Socket/TCP粘包、多包和少包, 断包 问题
为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整。为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? 带者问题,我们先分析一下问题。提到通信, 我们面临都通信协议,数据协议的选择。 通信协议我们可选择TCP/UDP:TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务转载 2013-12-12 23:27:30 · 1044 阅读 · 0 评论 -
【IOCP学习】IOCP模型总结
IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销转载 2014-01-15 17:45:55 · 1029 阅读 · 0 评论 -
进程间通信方式(全)
1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。 Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。 应用转载 2016-03-14 01:31:26 · 508 阅读 · 0 评论 -
【mark】如何改变VC中控件间的TAB切换顺序
在VC中,首先控件没有TABINDEX属性;其次,如果你发现这可能是由resource.h中控件的ID值引起的。那么你就错了:因为无论你如何调整resource.h中控件的ID值,都对TAB键的切换顺序不能发生任何影响;那么,VC中的控件顺序是由什么决定的呢?该如何来修改呢?在你的工程文件和工作区文件所在目录下有一同名的资源文件(*.rc),其中包含了本工程所有转载 2015-07-29 15:37:10 · 621 阅读 · 0 评论 -
CHtmlView浏览器双击页面保存图片的初步实现
BOOL CSampleBrowerView::PreTranslateMessage(MSG* pMsg){ if (pMsg->message == WM_LBUTTONDBLCLK)//双击保存图片 { //OpenClipboard();//一、打开剪切板 //HANDLE hClipMemory=::GetClipboardData(CF_TEXT);//二、获得指向剪切板原创 2014-07-08 16:26:31 · 1381 阅读 · 0 评论 -
【记录】Visual Leak Detector配置简明步骤
1、2、在stdafx.h原创 2014-06-16 09:28:39 · 890 阅读 · 0 评论 -
正则表达式和sscanf
在看这篇文章之前建议你先了解一下什么是正则表达式,具体不重复了,google一下能出一大堆,不过这篇文章比较好,贴个url http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm,作者说30分钟能看完的不是地球人,但是我15分钟就看完了还记住了90%以上,好吧我来自火星,玩笑到此结束,下面切入正题。 本文转载 2014-07-02 11:30:28 · 597 阅读 · 0 评论 -
正则表达式和sscanf测试记录
//#include #include "stdafx.h"#include using namespace std;void main(){ /* 这个结果应该是获取/到@之间的字符吧 第一个^/表示非/的字符 而*是忽略符 就是忽略在/之前的非/字符对吧 但是到了/以后 这个斜杠自身还没有被忽略掉 所以还要再忽略掉/自身 于是便将/加在了后面 这个语句其实分成%*[^/原创 2014-07-02 14:08:50 · 617 阅读 · 0 评论 -
c++代码与调试
1 规范易懂的代码现阶段软件开发,都要依靠团队的合作。程序员不再是个人英雄主义的代名词,程序员一方面要依赖大量其他程序员完成的代码,一方面又提供大量代码给其他人使用,代码实际上具备了两个要素:首先是可靠的提供某种功能,其次是清楚地表达作者的思想。任何交流都必须有一定的规范才能进行,体现在代码中就是规范易懂。另外,规范易懂的代码才是可重复使用的,规范的代码具有更长的寿命,具有更好的可维护性,转载 2014-06-09 17:12:40 · 638 阅读 · 0 评论 -
C++: byte数组和int整数的相互转化
网上搜了很多内容,没有找到直接转换函数,有一个转换代码需要将byte数组转换为字符数组,以字符数组为参数转换为int整数,多了一层转换。好不容易找到一个直接转换函数,记录下来,其中 bytes[0]存储低位,bytes[3]存储高位字节。//int转bytevoid intToByte(int i,byte *bytes,int size = 4){转载 2013-12-24 16:24:27 · 12489 阅读 · 1 评论 -
列出指定目录所有文件并修改文件名的源代码
/*system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字system("dir /b /ad c:\\*.* >d:\\alldirs.txt");//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字请记住,能用shell命令获取文件、文件夹信息或原创 2014-06-25 15:12:41 · 1143 阅读 · 0 评论