摘要: 1.编程开发工具 Vc6.0 + msdn https://pan.baidu.com/s/1-ObloerwhacjHqeoxFzKIg 提取码: igo2 Vs2012安装介绍 https://www.cnblogs.com/fzxiaoyi/p/12041854.html Vs2012帮助文档 阅读全文
posted @ 2019-12-16 07:14 SmallOverFllow 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 问题描述: MFC创建的对话框默认类名是:#32770,而经常我们需要通过自定义类名,然后通过FindWindow查找窗口 默认情况下对话框类名是不能修改的,以灰色显示: 解决方案: 1. 打开项目的资源视图,在xxxx.rc上右键点击属性 2. Mfc Mode默认是True,修改成成False 阅读全文
posted @ 2020-01-01 21:29 SmallOverFllow 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 扫雷的进程名: MineSweeper.exe 64位应用程序 失败提示信息: 首先这个窗口显示时其它窗口没有反映,很明显是个模态对话框使用x64dbg附加进程,然后下相关断点, MessageBoxW CreateWindowExW DialogBoxParamW然后游戏中断在DialogBoxP 阅读全文
posted @ 2019-12-29 21:07 SmallOverFllow 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 算法(Algorithm):STL算法主要由头文件<algorithm>,<numeric>和<functional>组成 <algorithm> 比较、交换、查找、遍历、复制、修改、反转、排序、合并等等算法 <numeric> 只包括几个在序列上进行数学运算的模板函数,加法、乘法等 <functi 阅读全文
posted @ 2019-12-28 18:33 SmallOverFllow 阅读(272) 评论(0) 推荐(0) 编辑
摘要: mpa是一个键值对(key,value)序列容器, 其中key是唯一的,提供基于key的快速查询能力.属于标准关联式容器的一种. 元素插入过程是按排序规则插入,不能指定插入位置. 它不支持随机存取元素,不能使用数组[]和at方式进行访问. map与multimap区别: map中key是唯一的,而m 阅读全文
posted @ 2019-12-28 16:44 SmallOverFllow 阅读(441) 评论(0) 推荐(0) 编辑
摘要: set(集合)是一个集合容器,容器中的元素是唯一的,元素即是键值又是实值,集合中的元素按一定的顺序排序.属于关联式容器的一种. 元素插入过程是按排序规则插入,不能指定插入位置. 它不支持随机存取元素,不能使用数组[]和at方式进行访问. set与multiset区别:set每个元素值在容器中只能出现 阅读全文
posted @ 2019-12-27 16:09 SmallOverFllow 阅读(339) 评论(0) 推荐(0) 编辑
摘要: list(双向链表):是一个双向链表容器,可以高效的地进行插入和删除元素。 同前二种序列式容器相比,它不支持随机存取元素,不能使用数组[]和at方式进行访问。 它对元素的搜寻速度是所有容器中最慢的。 所需头文件:#include<list> 构造函数: 1 list<int> listA; //构造 阅读全文
posted @ 2019-12-26 15:50 SmallOverFllow 阅读(202) 评论(0) 推荐(0) 编辑
摘要: deque(双端队列):是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。 它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪. 向deque 两端添加或删除元素的开销很小。它不需 阅读全文
posted @ 2019-12-25 21:10 SmallOverFllow 阅读(304) 评论(0) 推荐(0) 编辑
摘要: vector(向量):一个能够存放任意类型的动态数组。它是一个类模板,可用于表示多种不同的数据类型 所需头文件:#include<vector> vector与数组的区别: 数组长度是固定的,在定义时就确定了数组的长度,不能在定义后修改数组长度,更不能添加或删除数组中的元素 vector长度是非固定 阅读全文
posted @ 2019-12-25 15:13 SmallOverFllow 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 容器:用来管理和存储一组元素的数据集合, 所有STL容器内部都提供默认构造函数和默认拷贝构造函数,当容器中加入元素时,内部会进行值拷贝,而不是引用 所有STL容器都提供了一些相同的操作方法,比如: size() 返回容器中元素个数 empty() 容器是否为空 c1 == c2 比较二个容器中所有元 阅读全文
posted @ 2019-12-24 17:11 SmallOverFllow 阅读(279) 评论(1) 推荐(1) 编辑
摘要: 模板:实现代码重用的一种方式,通过类型参数化,把类型定义为参数 C++模板分为:函数模板与类模板 函数模板: 定义个通用的函数,函数返回值类型和形参类型用虚拟的类型来代表. 当调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同的函数功能. 函数模板定义形式 Template<type 阅读全文
posted @ 2019-12-24 15:23 SmallOverFllow 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 1.使用windows api方式转换 MultiByteToWideChar() WideCharToMultiByte() 需要包含头文件<Windows.h> 1 void StringToWstring_WindowApi(const string &str, wstring &wstr) 阅读全文
posted @ 2019-12-23 18:52 SmallOverFllow 阅读(1063) 评论(1) 推荐(1) 编辑
摘要: STL: C++标准模板库的简称,它是C++的一部份。标准C++库的所有的标识符都是在一个名为std的命名空间中定义的 在使用STL中相关模板时,需要包含相关头文件,然后using namespace std; 注意:C++所用的头文件名是在C语言的相应的头文件名(但不包括后缀.h)之前加一字母c 阅读全文
posted @ 2019-12-23 17:07 SmallOverFllow 阅读(580) 评论(1) 推荐(1) 编辑
摘要: 信号量依然是一种内核同步对象,它的作用在于控制共享资源的最大访问数量 例如:我们有一个服务器,为这服务器创建一个线程池,线程池有五个线程,每个线程处理1个请求。当五个线程都在处理请求时,这个线程池己到达使用上限, 可使用数量为0,无法再处理其它请求。此时又有新的请求到来,新的请求将被放入缓存中进行等 阅读全文
posted @ 2019-12-22 16:15 SmallOverFllow 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 事件和互斥体同样属于内核同步对象,它和互斥体以及临界区在功能上有以下区别 前面的互斥体和临界区主要作用在于确保控制多个线程之间对共享资源访问,保证共享资源的完整性 事件主要作用是通知其它线程一个操作己经完成,可以接下来执行后面剩余操作了,确保多个线程之间的动作以指定的次序发生 例如:一个线程A用于初 阅读全文
posted @ 2019-12-21 21:06 SmallOverFllow 阅读(608) 评论(1) 推荐(0) 编辑
摘要: 临界区是指一个小代码段,在代码能够执行前,它必须独占对某些共享资源的访问权。和使用mutex一样,它们都是以原子操作方式来对共享资源进行访问。 临界区又叫关键代码段,与上一篇的mutex互斥体实现的功能一样,都是为了让多线程同步 从上面图片可以看到二者的区别,如果是在当前进程进行线程同步,只需要采用 阅读全文
posted @ 2019-12-20 14:55 SmallOverFllow 阅读(684) 评论(0) 推荐(0) 编辑
摘要: 同步进制的引入为了解决以下三个主要问题:1.控制多个线程之间对共享资源访问,保证共享资源的完整性例如:线程A对共享资源进行写入,线程B读取共享资源2.确保多个线程之间的动作以指定的次序发生例如:线程B以线程A结束为条件进行触发运行3.控制共享资源的最大访问数量例如:有10个线程需要访问共享资源,同时 阅读全文
posted @ 2019-12-19 16:16 SmallOverFllow 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 编写一个多线程Demo用于演示多线程基本操作 功能介绍: 1. 有三个线程,线程1 线程2 线程3,分别在间隔时间0.5秒,1秒,1.5秒绘制一个椭圆形,椭圆形数量为10时线程自动退出 2. 添加三个静态文本用于显示三个线程绘制的椭圆形数量. 默认为0 3. 添加四个按钮,一个用于启动线程,一个用于 阅读全文
posted @ 2019-12-18 17:40 SmallOverFllow 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 进程:系统中正在运行的一个应用程序,在32位系统中,进程占据4GB虚拟机地址空间64位系统中,进程占据2的64次方的虚拟地址空间进程组成部份:1.内核对象:系统用于存放关于进程统计信息的地方 2.地址空间:包含所有可执行模快和DLL模快的代码和数据。还包含动态内存分配的空间。如线程堆栈和堆分配空间 阅读全文
posted @ 2019-12-18 10:30 SmallOverFllow 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 在第三章的基础上,接着添加一个显示调用项目 显示调用项目创建: 1.给解决方案添加一个新的控制台项目DisplayCall用于测试动态库,创建完成后设置为启动项目 2.DisplayCall.cpp添加相关代码 1 // DisplayCall.cpp : 定义控制台应用程序的入口点。 2 // 3 阅读全文
posted @ 2019-12-17 17:50 SmallOverFllow 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 动态库分为二种,一种隐式链接,另一种显示调用。不论哪种动态库,本质都是运行时动态加载 隐式链接:程序运行时,由编译系统自动加载动态库,然后根据程序的引入表进行重定位,当程序退出时自动卸载动态库 显示调用:程序运行时,在需要使用动态库时手动使用LoadLibrary进行加载,当不需要动态库时使用Fre 阅读全文
posted @ 2019-12-17 15:58 SmallOverFllow 阅读(715) 评论(0) 推荐(0) 编辑