Ptr
  • 2025-01-09设计模式之简单工厂模式
    设计模式之简单工厂模式(SimpleFactoryPattern)模式定义简单工厂模式又叫静态工厂方法模式,属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。类图代码enumProd
  • 2025-01-09设计模式之抽象工厂模式
    设计模式之抽象工厂模式(AbstractFactoryPattern)模式定义抽象工厂模式(AbstractFactoryPattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。类图代码//抽象产品类AclassAbstractProductA{pub
  • 2025-01-09Win32汇编学习笔记09.SEH和反调试
    Win32汇编学习笔记09.SEH和反调试-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区-BpSend.netSEH-structedexceptionhandler结构化异常处理跟筛选一样都是用来处理异常的,但不同的是筛选器是整个进程最终处理异常的函数,但无法做到比较精细的去处理异常(例如处理某
  • 2025-01-09深入理解C++智能指针:使用方法与注意事项
    智能指针是C++标准库提供的一种工具,用于管理动态分配的内存。相比传统的裸指针(rawpointer),智能指针能够自动管理资源,避免内存泄漏和悬空指针问题。本文将围绕智能指针的基本概念、常见类型及其使用方法展开,帮助你掌握这一强大的工具。一、什么是智能指针?智能指针是一个封装了
  • 2025-01-08C++强制类型转换
    目录一.C语言类型转换1.自动类型转换2.强制类型转换二.C++强制类型转换1. static_cast2.const_cast3.reinterpret_cast4.dynamic_cast一.C语言类型转换1.自动类型转换C/C++中均提供自动类型转化,适用于部分内置类型的互相转换,语法格式如下:目标类型b = a;
  • 2025-01-08高级IO(epoll)(ET)
    目录epoll工作方式水平触发(LT)边缘触发(ET)水平触发LevelTriggered工作模式边缘触发EdgeTriggered工作模式对比LT和ET理解ET模式和非阻塞文件描述符epoll的使用场景代码实现设置ET模式非阻塞设置两个错误信号打印客户端信息事件管理器一次性读取字符串数据
  • 2025-01-08C++二十三种设计模式之观察者模式
    C++二十三种设计模式之观察者模式一、组成二、目的三、缺点四、示例代码一、组成抽象主题:维护观察者对象列表,具备通知功能。具体主题:实现维护观察者对象列表具体策略和通知功能。抽象观察者:为主题类提供更新接口。具体观察者:实现更新接口。二、目的用于一个对象
  • 2025-01-08C++ const关键字(八股总结)
    作用const修饰符用来定义常量,具有不可变性。修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(pointertoconst)和自身是常量的指针(常量指针,constpointer);修饰引用,指向常量的引用(referencetoconst),用于形参类型,即避免了拷贝,又避免了函数对值的修改;修饰成员函数,
  • 2025-01-071.3.1 C++新特性
    文章目录1.3.1C++新特性1.智能指针1.为什么要用智能指针2.三种智能指针对比3.shared_ptr1.使用智能指针可以自动释放占用的内存2.共享所有权指针的传播和释放3.常用函数4.要注意的问题4.unique_ptr5.weak_ptr弱引用的智能指针1.基本用法2.weak_ptr返回this指
  • 2025-01-06C++学习笔记#01——指针与链表
    在自学C++的时候,发现指针是一个很难绕开的东西,看了一些参考资料和别人的程序,写一些垃圾。Part1指针指针是一个指向一片内存地址的变量,相当于家的门牌号。我们即可以通过变量名来访问一个变量,也可以通过它对应的地址来访问。就像你的老师可以点你的名字找你,也可以找你宿舍的门
  • 2025-01-06.NET Core GC对象 分配(GC Alloc)底层原理浅谈
    对象分配策略.NET程序的对象是由CLR控制并分配在托管堆中,如果是你,会如何设计一个内存分配策略呢?按需分配,要多少分配多少,移动alloc_ptr指针即可,没有任何浪费。缺点是每次都要向OS申请内存,效率低预留缓冲区,降低了向OS申请内存的频次。但在多线程情况下,alloc_ptr锁竞争会非常
  • 2025-01-06聊一聊 C#异步中的Overlapped是如何寻址的
    一:背景1.讲故事前段时间训练营里的一位朋友提了一个问题,我用ReadAsync做文件异步读取时,我知道在Win32层面会传lpOverlapped到内核层,那在内核层回头时,它是如何通过这个lpOverlapped寻找到ReadAsync这个异步的Task的呢?这是一个好问题,这需要回答人对异步完整的运转流程有一
  • 2025-01-05【C语言编程】地址与指针:理解与应用
    在C语言编程中,理解地址和指针的概念至关重要。地址是内存中可以唯一标识内存单元的数字,而指针则是存储这些地址的变量。通过指针,程序员可以直接访问和操作内存,这是C语言强大功能的基础。地址的概念在C语言中,每个变量都存储在内存中的一个特定位置,这个位置就是变量的地址。例如,一
  • 2025-01-05cpp智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu
  • 2025-01-05Win32汇编学习笔记05
    定位关键点3种方法:过程函数api字符串但是不确定用要哪一种方法,可以3种方法都用一下,因为在不同的程序,实用的方法是不一样的窗口程序看控件信息1.通过OD去看还可以用spy++查看还可以用vs2019,打开软件,找到对应控件直接看属性一般拿句柄没用,因为按钮是响应WM_
  • 2025-01-03Win32汇编学习笔记03.RadAsm和补丁
    https://bpsend.net/thread-163-1-1.html补丁扫雷游戏啊下补丁在扫雷游戏中,点关闭弹出一个确认框,确认之后再关闭,取消就不关闭首先第一步就是确认关闭按钮响应的位置,一般都是WM_CLOSE的消息,消息响应一般都在过程函数,所以就是要定位到过程函数,我们知道MC项目中,
  • 2025-01-03C++中的数组与指针
    在大多数C++书籍或教程中,数组和指针的知识总是放在一起让大家学习,这是为什么,它们之间有什么联系呢?在C++中,数组与指针有着紧密的联系,主要体现在下面几个方面:1、数组名即指针:本质联系:在大多数情况下,数组名会被隐式转换为指向数组第一个元素的指针。例如,对于一个数组intarr[5];
  • 2025-01-01Rust里面的内部可变性
    1.Cellusestd::cell::Cell;#[derive(Debug)]structSomeStruct{regular_field:u8,special_field:Cell<u8>,}fnmain(){letmy_struct=SomeStruct{regular_field:0,special_field:Cell::new(1),};println!(&q
  • 2024-12-31【C++11】智能指针
    目录指针标准库unique_ptr对应类方法创建unique_ptr对象的两种方法unique_ptr的使用特性shared_ptr类方法循环引用造成内存泄漏weak_ptrweak_ptr的创建三个方法功能例子1例子2指针普通指针:指向内存区域的地址变量当普通指针指向动态分配的内存的时候,即使这个指
  • 2024-12-31【C#随笔】封装一下NativeMemory类
    终于,主播也是用上博客园了,可喜可贺来博客园不能不发文章,所以主播没事干先发个一篇看看实力.NET6的时候引入了一个新类,叫NativeMemory,里面提供了AllocFree等方法作为malloc和free的包装想当年我写非托管内存的时候都是Marshal类起手,居然写了这么久才发现早就有了这玩意,那不得封
  • 2024-12-29Rust中以下三个东西是什么?有什么用? #[automatically_derived] #[allow(clippy::ptr_arg)] #[rustfmt::skip]
    Rust中以下三个东西是什么?有什么用?#[automatically_derived]#[allow(clippy::ptr_arg)]#[rustfmt::skip]gpttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt在Rust中,以下三个属性分别有不同的用途:1.#[automatically_derived]作用:这个属性表示该代码是由
  • 2024-12-28cpp智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu
  • 2024-12-284.采用锁操作并支持等待功能的线程安全队列
    分析书接上文修改push()似乎并不困难:在函数末尾加上对data_cond.notify_one()的调用即可,与代码清单1(第一篇文章)一样。事情其实没那么简单,我们之所以采用精细粒度的锁,目的是尽可能提高并发操作的数量。如果在notify_one()调用期间,互斥依然被锁住,形式与代码清单1一样,而等
  • 2024-12-28聚类时过滤点云
    为过滤车体和车体旁可能影响规划的障碍物,在lidar_euclidean_cluster_detect功能包中新增filteredPointsBydistance函数。voidfilteredPointsBydistance(constpcl::PointCloud<pcl::PointXYZ>::Ptrin_cloud_ptr,pcl::PointCloud<pcl::PointXYZ>
  • 2024-12-26C++ 杂记03 指针(二) 智能指针
    C++中,智能指针与普通指针不同,是包含指针的一种类模板,用于管理动态分配的内存。智能指针的行为类似于常规指针,但是能够自动地释放所指向的对象,避免内存的泄露。智能指针通过对被引用对象进行计数的方式,或者其他机制,限制被引用的次数,避免形成循环引用。相较于常规指针,在使用完以后,