- 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++中,智能指针与普通指针不同,是包含指针的一种类模板,用于管理动态分配的内存。智能指针的行为类似于常规指针,但是能够自动地释放所指向的对象,避免内存的泄露。智能指针通过对被引用对象进行计数的方式,或者其他机制,限制被引用的次数,避免形成循环引用。相较于常规指针,在使用完以后,
- 2024-12-26C和C++编程语言中的前向声明简介
前向声明(ForwardDeclaration)是C和C++编程语言中的一种技术,用于在不需要完整类型定义的情况下,声明一个类型即将存在。这种技术主要用于减少头文件的相互依赖,以及加快编译速度。一、前向声明的概念在C和C++中,当一个类型(如结构体、联合体、类或枚举)在另一个类型之前被引用时,通
- 2024-12-24C++ 指针进阶:动态内存与复杂应用
1.动态内存分配:new与delete运算符在C++编程中,动态内存分配是一项至关重要的技术,它允许我们在程序运行时根据实际需求分配和释放内存。new运算符用于在堆内存中分配内存,delete运算符则用于释放通过new分配的内存。当我们需要动态分配单个变量时,可以这样使用new:int*ptr
- 2024-12-24C++ 指针基础:开启内存操控之门
1.指针为何如此重要在C++编程领域,指针堪称一项极为关键的特性。它赋予了程序员直接访问和操控内存的能力,这使得程序在处理复杂数据结构与优化性能时具有更高的灵活性。想象一下,在编写大型程序时,高效地管理内存资源是多么重要,而指针就是实现这一目标的有力工具。例如,在处理
- 2024-12-24【C语言】[waring]comparison between pointer and integer报错
原因:在C语言中,指针和整型是不同的数据类型,它们之间不能直接进行比较。 改正:在arr[i]前加&取地址 [waring]comparisonbetweenpointerandinteger改正方法:1.显式类型转换(不推荐)intvalue=10;int*ptr=NULL;if((int)ptr==value){}这里if((int)ptr
- 2024-12-24实验6
实验六实验任务4task4.cpp#include<iostream>#include"vector.hpp"voidtest1(){usingnamespacestd;intn;cout<<"Entern:";cin>>n;Vector<double>x1(n);for(autoi=0;i<n;++i)x1.at(i)=i*0.7;co