windows码农屠龙手册
文章平均质量分 50
windows屠龙技
就是那个党伟
凡心所向,素履所往。
展开
-
[C++]简单工厂模式
简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。代码如下:// 参考大话设计模式#include <iostream>using namespace std;// baseclass Operatio...原创 2019-12-09 23:36:24 · 271 阅读 · 0 评论 -
[C++]观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。C++代码如下:// 此文件包含 "main" 函数。程序执行将在此处开始并结束。//// 参考大话设计模式#include <iostream>#include <vector> using...原创 2020-04-12 11:12:16 · 317 阅读 · 0 评论 -
[C++]单例模式
一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例。Demo包含C++11 static的demo 和 加锁方式的demo。单例 Singleton 是设计模式的一种,其特点是只提供。原创 2020-10-15 21:58:30 · 187 阅读 · 0 评论 -
DLL和CRT
也就是说,每个使用CRT静态链接的dll中都有一个自己的全局堆句柄,他们自己都在这个句柄上使用内存。也就是说在编译的最后一步(链接阶段),如果程序需要使用静态库,在这一步都会一起打包到可执行文件中。所需文件:接口.h头文件,dll文件,lib文件。:每个dll都是去调用CRT库的dll函数来分配和释放内存的,使用的是同一个句柄,所以没问题。CRT运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。若作为其他库的依赖库,将会造成多余的副本,因为必须与目标文件打包。原创 2024-05-30 10:49:24 · 433 阅读 · 0 评论 -
C++深拷贝和浅拷贝
*特点:**如果原始对象和拷贝对象共享同一块内存,当其中一个对象修改了这块内存中的数据时,另一个对象中的数据也会被修改,因为它们指向同一块内存区域。这可能导致意外的数据修改或释放问题。浅拷贝带来的问题是堆区的内存重复释放,当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,从而导致指针使用异常而程序崩溃。深拷贝是指在拷贝对象时,会创建一个新的对象,并将原始对象的所有内容都复制到新对象中,包括指针所指向的内容。原创 2024-05-30 10:15:10 · 241 阅读 · 0 评论 -
UI线程和工作线程
操作系统在开启一个新的进程时,并没有为其创建消息队列,而是当进程第一次调用GDI函数后,并且进程持有窗口时,才持有消息队列。在Windows下,只有那些具备窗口(GUI用户接口界面)的进程,才会有消息队列,那些不具备GUI的进程是没有消息队列的。只处理逻辑的线程,例如:启动一个线程,用来做一个复杂的计算,计算完成之后,此线程就自动退出,这种线程称为工作线程。Windows应用程序一般由窗口和控件组成,这也是应用程序与人交互的媒介,拥有窗口(控件)的线程称为UI线程。一个进程只有一个UI线程(即主线程)原创 2024-05-29 10:35:49 · 466 阅读 · 1 评论 -
std::move和左值右值
首先,函数参数T&&是一个指向模板类型参数的右值引用,通过引用折叠,此参数可以与任何类型的实参匹配(可以传递左值或右值,这是std::move主要使用的两种场景)。在 C++ 中,左值是可以被取地址的表达式,而右值是临时的、不可取地址的表达式。通常,左值是具有名称、有持久性的,而右值是临时性的、瞬时的。std::move 是 C++ 标准库中的一个函数模板,用于将一个左值(左值引用)转化为右值引用,从而实现移动语义。一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。原创 2024-05-29 11:07:19 · 555 阅读 · 0 评论 -
创建线程的方法(windows)
windows上常用的创建线程的方法:CreateThread(),_beginthread(),std::thread。原创 2024-05-16 11:04:35 · 1080 阅读 · 0 评论 -
构造函数不能做为虚函数
虚函数对应一个虚函数表,这大家都知道,可是这个虚函数表其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过虚函数表来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。原创 2023-09-20 10:39:13 · 413 阅读 · 1 评论 -
C++11 Lambda表达式
*捕获列表:**用来说明外部变量的访问方式,外部变量访问方式说明符可以是 = 或 & ,表示函数体中用到的、定义在外面的变量在函数体中是否允许被改变。[=, &a] 表示按值传递的方法捕获父作用域的所有变量,但按引用传递的方法捕获变量a。[&, a] 表示按引用传递的方法捕获父作用域的所有变量,但按值传递的方法捕获变量a。函数对象定义在调用的地方,直接看到上下文,可读性更强,方便修改;[&] 表示按引用传递的方法捕获父作用域的所有变量。[=] 表示按值传递的方法捕获父作用域的所有变量。原创 2023-05-15 18:21:40 · 555 阅读 · 1 评论 -
windows进程间的通信
windows进程间通信原创 2023-03-01 15:55:54 · 852 阅读 · 0 评论 -
C++ 智能指针和使用陷阱
weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针,来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。如果我们主动释放掉get 函数获得的指针,那么智能 指针内部的指针就变成野指针了,析构时造成重复释放,带来严重后果!譬如:Boy类中有Girl的智能指针;智能指针的赋值拷贝,首先拷贝指向对象的指针,再使引用次数加减操作,虽然引用次数加减是原子操作,原创 2023-05-10 17:29:35 · 1032 阅读 · 0 评论 -
windbg错误码汇总
windbg错误码汇总。原创 2023-03-15 15:35:51 · 1504 阅读 · 0 评论 -
map、multimap、unordered_map
map、multimap、unordered_map原创 2023-03-02 20:27:36 · 479 阅读 · 0 评论 -
STL的特点
STL原创 2023-03-02 20:14:33 · 189 阅读 · 0 评论 -
vector、list、queue
vector/list/queue原创 2023-03-02 20:06:46 · 608 阅读 · 0 评论 -
C++多态的方式:重写和重载
重载和重写原创 2023-03-02 19:50:05 · 309 阅读 · 0 评论 -
析构函数作为虚函数的作用
虚析构函数的作用原创 2023-03-02 19:31:04 · 826 阅读 · 0 评论 -
虚函数的原理
虚函数的原理原创 2023-03-02 19:17:50 · 199 阅读 · 1 评论 -
线程共享和私有的数据
线程共享和独享的数据原创 2023-03-01 16:43:21 · 172 阅读 · 0 评论 -
C++多线程的同步
多线程的同步原创 2023-03-01 16:32:22 · 931 阅读 · 0 评论 -
windows码农屠龙手册
windows程序员面试指南原创 2023-03-01 15:18:07 · 493 阅读 · 0 评论
分享