C/C++程序设计
文章平均质量分 59
MessCodes
勿在浮沙筑高台,踏踏实实的走。
展开
-
C++函数指针实例详解(篇五)
/* 此代码中使用 C++ 11 标准中的 auto 关键字来 * 进行某些类型的自动匹配,所以需要编译器在编 * 译的过程中支持 C++ 11 标准,故编译命令为: × g++ point_fun_06.cpp -o point_fun_06 -Wall -std=c++11 */#include using namespace std ;const double* call_原创 2014-09-28 23:35:25 · 1196 阅读 · 0 评论 -
Windows多线程程序设计之线程同步分析(结合互斥对象)(下)
本篇中,我将对命名互斥对象进行实例讲解,代码如下:#include #include using namespace std ;DWORD WINAPI ThreadProc1(LPVOID lpParameter) ;DWORD WINAPI ThreadProc2(LPVOID lpParameter) ;int index ;int tickets = 100 ;HA原创 2013-06-23 15:02:20 · 1144 阅读 · 0 评论 -
STL之list基础
转自:点击打开链接各个容器有很多的相似性。先学好一个,其它的就好办了。先从基础开始。先看看他们的分类吧标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。 非标准关联容器hash_set、转载 2013-06-19 22:58:29 · 1030 阅读 · 0 评论 -
STL之向量(vector)
转载:点击打开链接一、向量的介绍向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。在使用它时, 需要包含头文件 vector,#include转载 2013-07-08 23:51:35 · 2211 阅读 · 0 评论 -
命名管道
"命名管道"或"命名管线"(Named Pipes)是一种简单的进程间通信(I P C)机制,Microsoft Windows NT,Windows 2000,Windows 95以及Windows 98均提供了对它的支持(但不包括Windows CE).命名管道可在同一台计算机的不同进程之间,或在跨越一个网络的不同计算机的不同进程之间,支持可靠的,单向或双向的数据通信.用命名管道来设计应用转载 2013-06-21 21:44:02 · 1413 阅读 · 0 评论 -
Windows编程之管道技术
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。 现在就来讨论一下,如何用匿名管道技术实现这个功能。 管道技术由来已久,相信不少人对DOS命令里的管转载 2013-06-21 21:35:24 · 1314 阅读 · 0 评论 -
原始套接字
转自:点击打开链接利用原始套接字可以访问位于基层的传输协议。原始套接字向程序员提供了读写IP/ICMP/IGMP以及构造特殊的IP报文的功能:SOCKET s; s=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP); //或者 WSASocket(AF_INET,SOCK_RAW,IPPROTO_TCMP,NULL,0,WSA_FLAG_OVERL转载 2013-06-21 18:14:06 · 808 阅读 · 0 评论 -
何为内核对象
转自:点击打开链接内核对象如:访问令牌对象,事件对象,文件对象,文件映射对象,I/O完成端口对象,作业对象,邮件槽对象,互斥量对象,管道对象,进程对象,信号量对象,线程对象,可等待的计时器对象以及线程池工厂对象。这些对象通过不同名称的函数来创建。函数的名称并非肯定与操作系统内核级别上使用的对象类型对应。每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由转载 2013-06-21 18:01:21 · 904 阅读 · 0 评论 -
临界区结构(CRITICAL_SECTION)的使用
转自:点击打开链接CRITICAL_SECTION cs;InitializeCriticalSection(&cs);EnterCriticalSection(&cs);在这时,线程被认为「拥有」临界区域对象。两个线程不可以同时拥有同一个临界区域对象,因此,如果一个线程进入了临界区域,那么下一个使用同一临界区域对象呼叫EnterCriticalSection的线程将在函数转载 2013-06-19 22:28:54 · 1633 阅读 · 0 评论 -
Win32 API之SendMessage与PostMessage
转自:点击打开链接Win32 API消息函数:SendMessage(发送消息)函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程 序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。函数原型:LRESULT SendMessage( HWND hWn转载 2013-06-08 11:35:26 · 5758 阅读 · 0 评论 -
Win32 API对文件的操作(注释)
文件操作的方式有很多, C语言的文件操作, C++的文件操作(C++中将文件操作相关的函数都封装到相应的类中, 其中文件读取的相关方法都封装在类 ifstream 中, 文件写入的相关方法都封装在类 ofstream中。因为在C++中对文件的操作与C语言类似, 这里不在进行说明了; 下面主要说一下Win 32平台SDK中的文件操作:读取文件: HANDLE hFile原创 2013-06-07 20:04:50 · 1519 阅读 · 0 评论 -
WinSock基本I/O模型简介
转自:点击打开链接如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择模型、异步选择模型、事件选择模型、重叠I/O模型和完成端口共五种I/O模型。每一种模型均适用于一种特定的应用场景。编程人员应综合考虑到程序的扩展性和可移植性等因素,做出自己的选择。1 选择模式(Select)选择模型是Winsock中最常转载 2013-06-17 21:44:20 · 907 阅读 · 0 评论 -
套接字选项—修改套接字缓冲区大小
转自:点击打开链接有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const vo转载 2013-06-17 12:17:47 · 4493 阅读 · 0 评论 -
系统消息
转自:点击打开链接Windows消息分布消息范围说 明0 ~ WM_USER – 1系统消息WM_USER ~ 0x7FFF自定义窗口类整数消息WM_APP ~ 0xBFFF应用程序自定义消息转载 2013-06-14 20:17:03 · 951 阅读 · 0 评论 -
窗体
转自:点击打开链接 三个角度窗口含义从应用程序开发员的角度窗口就是图形用户界面句柄,以该句柄作为系统API的参数,就可以对窗口进行各种操作从MFC程序员角度窗口就是一个CWnd对象从操作系统角度窗口是一块普通内存块.该内存中保存了一个数据结构的信息(WNDCLASS).操作系统利用这个数据结构维护窗口状态窗口类型可重叠窗口这种窗口是有标题转载 2013-06-14 20:15:17 · 922 阅读 · 0 评论 -
Win32 窗体开发主要流程
转自:点击打开链接窗体设计窗体设计和消息循环设计流图: 代码示例://设计窗口 WNDCLASS wndclass; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hbrBackground=(HBRUSH)GetStockObject(WHI转载 2013-06-14 20:12:47 · 986 阅读 · 0 评论 -
Windows 应用程序交互过程
转自:点击打开链接应用程序Windows的应用程序一般包含窗口(Window),它主要为用户提供一种可视化的交互方式,窗口是由线程(Thread)创建的.Windows系统通过消息机制来管理交互,消息(Message)被发送,保存,处理,一个线程会维护自己的一套消息队列(Message Queue),在发生输入事件之后,Windows将事件转换为一个「消息」并将消息放入转载 2013-06-14 20:10:55 · 1117 阅读 · 0 评论 -
Windows多线程程序设计之线程同步分析(结合互斥对象)(中)
接上篇....先来看看代码,如下:MultiThread4.cpp#include #include using namespace std ;DWORD WINAPI ThreadProc1(LPVOID lpParameter) ;DWORD WINAPI ThreadProc2(LPVOID lpParameter) ;int index ;int ticket原创 2013-06-23 14:40:45 · 1181 阅读 · 0 评论 -
Windows多线程程序设计之线程同步分析(结合互斥对象)(上)
Windows中的多线程程序设计一直是所有编程人员感到困难的一个地方,主要是在Windows多线程程序设计中,往往要考虑很多的东西,线程启用的多少,线程之间的同步问题等等... 这里我将将我学习过程中碰到的问题总结在此,如果有遇到相同困惑的人也能够尽快的明白过来。MultiThread1.cpp#include #include using namespace s原创 2013-06-23 13:16:54 · 1786 阅读 · 0 评论 -
C++函数指针实例详解(篇三)
代码一:#include using namespace std ;const double* call_001(const double ar[], int n) ;const double* call_002(const double [], int) ;const double* call_003(const double *, int) ;int main(int ar原创 2014-09-28 23:06:55 · 1116 阅读 · 0 评论 -
C++函数指针实例详解(篇四)
#include using namespace std ;typedef const double* (*FUN[3])(const double *, int) ;const double* call_001(const double ar[], int n) ;const double* call_002(const double [], int) ;const double原创 2014-09-28 23:33:22 · 987 阅读 · 0 评论 -
C++函数指针实例详解(篇二)
#include using namespace std ;const double* call_001(const double ar[], int n) ;const double* call_002(const double [], int) ;const double* call_003(const double *, int) ;int main(int argc, ch原创 2014-09-28 22:56:22 · 1055 阅读 · 0 评论 -
C++函数指针实例详解(篇一)
#include using namespace std ;const double* call_001(const double ar[], int n) ;const double* call_002(const double [], int) ;const double* call_003(const double *, int) ;int main(int argc, ch原创 2014-09-28 22:50:53 · 3026 阅读 · 0 评论 -
VMware下的RHEL 6.4 安装gcc和gcc-c++
安装gcc首先需要相应的软件包(即rpm包),在rhel-workstation-6.4-x86_64-dvd.iso中就有相应的rpm包,怎样将rhel-workstation-6.4-x86_64-dvd.iso镜像通过VMware下的CD/DVD设备挂载到VMmare中的Redhat系统中,如下所示:点击【Settings...】选项,打开如下对话框:相关设置完成原创 2013-10-18 19:52:33 · 24300 阅读 · 25 评论 -
MFC界面编程技术汇总
本篇内容均收集自网络,这些文章的内容都是本人在编写程序中曾经碰到过的问题,虽然这些文章不是直接的告诉了我怎么写才正确,但是这些文章给了我很多的启示。注:本篇里的技术文章将持续更新。 添加RichEdit控件后运行不显示对话框点击打开链接http://blog.163.com/lvlijuan001@126/blog/static/7799719820100291025127原创 2013-12-18 00:39:04 · 1463 阅读 · 0 评论 -
Windows平台下的多线程编程
转自:点击打开链接Win32 API是Windows操作系统内核与应用程序之间的界面,它将内核提供的功能进行函数包装,应用程序通过调用相关函数而获得相应的系统功能。为了向应用程序提供多线程功能,Win32 API函数集中提供了一些处理多线程程序的函数集。直接用Win32 API进行程序设计具有很多优点: 基于Win32的应用程序执行代码小,运行效率高,但是它要求程序员编写的转载 2013-11-10 23:15:12 · 1237 阅读 · 0 评论 -
Linux 文件锁
文件锁简介:Linux中,在文件共享的情况下如何对文件操作,也就是当多个用户共同使用、操作一个文件的情况。Linux通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。文件锁包括整个文件锁和文件区域锁。在Linux中,实现文件上锁的函数有flock()和fcntl(),其中flock()只能锁定整个文件,无法锁定文件的某一区域,而fcntl()不仅可以锁定整个文件,还可以只锁定文件原创 2013-11-04 19:59:58 · 1418 阅读 · 0 评论 -
一句话提升进程权限
RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE,1,0,NULL); 这个函数封装在NtDll.dll中(在所有DLL加载之前加载),被微软严格保密,就是说你在MSDN上查不到关于他的任何信息。.常量 SE_BACKUP_PRIVILEGE, "17", 公开.常量 SE_RESTORE_PRIVILEGE, "18", 公开.常量 SE_S转载 2013-07-02 23:04:21 · 1388 阅读 · 0 评论 -
代码注入(提升当前进程权限,创建远程线程)
代码注入源码分析:[cpp] view plaincopy#include #pragma comment(lib, "Advapi32.lib") #pragma comment(lib, "User32.lib") #define PATHNAME_LENGTH 256 void EnableDebu转载 2012-12-23 10:38:04 · 1632 阅读 · 0 评论 -
堆、栈和本地堆
转自:点击打开链接堆和栈站在数据结构的方面来说与堆栈是一样的,在内存方面来说,它们为内存的不同的区域,它们都是连续的内存空间,在分配和销毁空间时都满足后进先出的特点。拿一个应用程序来说,堆中保存全局变量,栈中保存局部变量,在一个应用程序开始执行时,堆的空间就定了,栈是在代码段中的,在这段空间中,除去代码占用的空间,其余的空间会分配给栈,说堆时要考虑操作系统,不同的操作系统堆转载 2013-06-27 18:12:38 · 1318 阅读 · 0 评论 -
内核对象句柄表
转自:点击打开链接一、什么是内核对象 在Windows中,为了简化对资源的访问,统一采用HANDLE来表示各种各样的资源(如内存块、映射文件、Mutex、Semophore等等)在内存中的存放方式(一种数据结构),我们称之为对象。该数据结构中存放的是要访问的资源的相关信息,包括实际资源内容在内存中的地址、该数据结构(对象)引用计数以及安全属性等等。凡是在函数参数列表转载 2013-06-27 21:02:30 · 1658 阅读 · 0 评论 -
Windows程序进程中内核对象句柄表
转自:点击打开链接一个进程在初始化时,系统将为它分配一个句柄表。这个句柄表仅供内核对象使用,不适用于用户对象或GDI对象。创建一个进程首次初始化的时候,其句柄表为空。当进程内的一个线程调用一个会创建内核对象的函数时,内核将为这个对象分配并初始化一个内存块。然后,内核扫描进程的句柄表,查找一个空白的记录项,并对其进行初始化。具体就是指针成员会被设置成内核对转载 2013-06-27 20:16:02 · 1991 阅读 · 0 评论 -
Windows多线程程序设计之线程同步分析(结合事件对象)(下)
本篇介绍命名的事件对象, 命名的事件对象的功能和原理其实和命名的互斥对象的功能和原理差不错, 所以在此篇中就不在进行详细的说明了, 如有疑问请看我的《Windows多线程程序设计之线程同步分析(结合互斥对象)(下)》连接地址:点击打开链接, 在这里我只给出相应的代码,如下:#include #include using namespace std ;DWORD WINAPI原创 2013-06-26 22:44:26 · 1155 阅读 · 0 评论 -
Windows多线程程序设计之线程同步分析(结合事件对象)(上)
声明: 关于这几篇《Windows多线程程序设计之线程同步分析(结合xx对象)》的博文中的程序, 大家最好能在一台单核CPU中进行测试, 本人使用的双核CPU在测试这些程序的过程中出现了各种各样的不同的问题, 但并不影响我们对多线程程序实现原理的理解, 出现的问题, 由于本人能力有限, 并没能给出相关的解释, 所以也就没有将问题写出来, 希望日后我能够找出这些问题的原因, 此系列的文章仅供参考,原创 2013-06-25 19:04:54 · 1284 阅读 · 0 评论 -
MFC之StdAfx.h头文件说明
StdAfx.h是一个预编译头文件,在这个头文件中包含了MFC程序运行所必要的头文件,该头文件中的包含的头文件如下:#include // MFC core and standard components#include // MFC extensions#include // MFC Automation classes#in原创 2013-06-23 21:03:54 · 2418 阅读 · 0 评论 -
系统消息 -- 键鼠消息
转自:点击打开链接鼠标消息在窗口显示区域鼠标消息WM_MOUSEMOVE当鼠标在窗口的显示区域移动时WM_LBUTTONDOWN按下鼠标左键WM_LBUTTONUP释放鼠标左键WM_LBUTTONDBLCLK转载 2013-06-14 20:19:40 · 908 阅读 · 0 评论 -
C语言文件操作(注释)
读操作:/* FILE *pFile = fopen("1.txt", "r") ; char buf[100] ; memset(buf, 0, 100) ; // 将数据缓冲区全部置为0 fread(buf, 1, 100, pFile) ; MessageBox(buf) ; fclose(pFile) ;*/ FILE *pFile = fopen("1.txt",原创 2013-06-05 19:03:02 · 1554 阅读 · 0 评论 -
(一)Socket I/O模型之选择(select)
转自:点击打开链接在windows平台构建网络应用,必须了解socket I/O模型。windows提供了选择(select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I /O(overlapped I/O)和完成端口(completion port)。 一、客户端代码 #include "stdafx.h" #i转载 2013-04-23 18:13:42 · 918 阅读 · 0 评论 -
24点游戏的编程算法(C语言实现)
#include #include #include #define LING 1E-6#define CONT 4#define VOLUE 24float number[CONT]; char expression[CONT][20] ; bool m_judge = false; //判断是否有解。int count = 0;void Find原创 2013-04-23 00:09:31 · 12469 阅读 · 0 评论 -
MFC中消息响应函数定义及消息映射宏定义参考
MFC中消息映射定义在源文件中(即.cpp)文件中,找到如下代码处,向其中添加消息映射的相关代码,什么样的消息用什么样的消息映射宏请参考后面的消息映射宏BEGIN_MESSAGE_MAP(CMFC_PR008View, CView) //{{AFX_MSG_MAP(CMFC_PR008View) ON_WM_CREATE() //}}AFX_MSG_MAP // Standard原创 2013-04-06 13:48:46 · 4404 阅读 · 0 评论