• 2024-11-13《深度解析 C++中的弱引用(weak reference):打破循环依赖的利器》
    在C++编程的世界里,内存管理一直是一个关键且复杂的话题。而弱引用(weakreference)的出现,为我们处理一些特殊的内存相关问题提供了一种巧妙的方法。今天,我们就来深入了解一下什么是弱引用。一、从引用的基本概念说起我们都知道,在C++中,引用是一种给变量起别名的方式。正常
  • 2024-11-10C++之智能指针
    智能指针是C++中的一种资源管理工具,用于自动管理动态分配的内存。它们通过在不再需要时自动释放内存来防止内存泄漏。C++标准库提供了几种不同类型的智能指针,每种都有其特定的用途和行为。主要的智能指针类型std::unique_ptrstd::shared_ptrstd::weak_ptr1. std::unique_pt
  • 2024-11-06C++智能指针
    C++智能指针以引用计数为基础的智能指针,引用计数的管理逻辑如下:除了初始化对象本身外,每个构造函数(拷贝构造函数除外)还要在堆上创建一个引用计数,用来记录有多少个对象共享状态。当我们创建一个对象时,只有一个对象共享状态,因此将引用计数初始化为1;拷贝构造函数不分配新的计数器
  • 2024-10-22iOS Swift 的捕获列表 [weak self] 和 [unowned self]
    捕获列表(capturelist)是Swift中闭包的重要概念之一,用来控制闭包如何捕获和存储其上下文中的外部变量。捕获行为在闭包中使用外部变量时,Swift会自动捕获这些变量的引用。如果这些变量是引用类型(如类实例),闭包会持有它们的强引用,可能导致强引用循环,即内存泄漏。捕获列表允许你
  • 2024-10-12RAII - std智能指针
    std智能指针智能指针的选择标准在类中使用智能指针作为成员变量。需要根据实际情况(主要是看所有权)原始指针:所有权:该资源对象不属于我,使用前提:资源对象被释放前,我理应必然已经被释放。否则会存在风险。unique_ptr:所有权:该对象仅仅属于我。被管理的资源对象的生
  • 2024-10-08智能指针的创建
    智能指针是C++中用于自动管理动态分配内存的工具,主要有三种类型:std::unique_ptr、std::shared_ptr和std::weak_ptr。下面是如何创建和使用这些智能指针的详细说明:1.std::unique_ptr用途:std::unique_ptr是一种独占式智能指针,确保指向的对象在同一时间只能被一个指针拥有
  • 2024-08-18基于STM32的寄存器实现点亮LED
    1.启动文件startup_stm32f103xe.s;********************(C)COPYRIGHT2017STMicroelectronics********************;*FileName:startup_stm32f103xe.s;*Author:MCDApplicationTeam;*Description:STM32F103xEDevicesvectort
  • 2024-08-07【iOS】SideTable
    目录SideTablesStripedMapSideTable1.spinlock_tslock2.RefcountMap3.weak_table_t总结objc4源码地址:SideTable&table=SideTables()[this];//获取对象的SideTablesize_t&refcntStorage=table.refcnts[this];SideTables查源码SideTables的结构如
  • 2024-08-06STM32启动文件,在启动文件中理解IAP
    ;********************(C)COPYRIGHT2017STMicroelectronics********************;*FileName:startup_stm32f103xe.s;*Author:MCDApplicationTeam;*Description:STM32F103xEDevicesvectortableforMDK-ARMtoolchain.;*
  • 2024-07-04JVM专题之G1垃圾收集器下
    索引(记录)的源码的工作流程图如下:CSet(CollectionSet回收集合)收集集合(CSet)代表每次GC暂停时回收的一系列目标分区。在任意一次收集暂停中,CSet所有分区都会被释放,内部存活的对象都会被转移到分配的空闲分区中。因此无论是年轻代收集,还是混合收集,工作的机制都是一致的。年轻
  • 2024-07-03聊聊C++20的三向比较运算符 `<=>`
    C++20标准引入了许多新特性,其中之一是三向比较运算符<=>,也被称为太空船运算符。这个新运算符为C++程序员提供了一种全新的比较对象的方式,它能有效简化比较逻辑,避免编写多个比较运算符重载的情况。为什么需要三向比较运算符?在C++20之前,如果要完整地定义一个类型的比较行为
  • 2024-06-17C++11智能指针 unique_ptr、shared_ptr、weak_ptr与定制删除器
    目录智能指针场景引入-为什么需要智能指针?内存泄漏什么是内存泄漏内存泄漏的危害内存泄漏分类如何避免内存泄漏智能指针的使用及原理RAII简易例程智能指针的原理智能指针的拷贝问题智能指针的发展历史std::auto_ptr模拟实现auto_ptr例程:这种方案存在的问题:Boost库中的智能指针
  • 2024-06-16C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对
  • 2024-06-04_weak c语言在实际使用中有什么核心作用
    C语言中__weak关键字的核心作用在C语言中,__weak关键字通常用于声明弱符号,它允许在链接阶段出现多个同名函数的情况下,选择性地指定某个函数具有较低的优先级。如果在代码中使用了__weak修饰的函数,并且在链接时没有找到其他同名的强符号函数,那么编译器会自动链接到这个弱符号函
  • 2024-05-31[论文阅读] Aligner@ Achieving Efficient Alignment through Weak-to-Strong Correction
    Pretitle:Aligner:AchievingEfficientAlignmentthroughWeak-to-StrongCorrectionsource:Arxiv2024paper:https://arxiv.org/abs/2402.02416code:https://aligner2024.github.io/ref:https://mp.weixin.qq.com/s/O9PP4Oc_Ee3R_HxKyd31Qg关键词:LLM,align,fin
  • 2024-05-30DVWA-Weak Session IDs
    用户登录之后,服务端会创建一个session,里面存储用户的状态和相关信息。而为了缓和客户端的存储压力,客户端只存储一个session_id,一般session_id放在cookie中。如果session_id被劫持,黑客可以使用其登录直接登录到目标账户。题目有点没看懂拿HighLevel举例,只拿到PHPSESSID就
  • 2024-05-28智能指针一些实现分析
    智能指针一些实现分析提供值传递但是指针语义的功能。通过指针占用并且对管理对象,在离开作用域时释放该对象。在使用上还有另外一个很好用的功能,精简了代码复杂度,管理的对象类可以省略以下的函数默认构造函数复制构造函数复制赋值函数比如有一个类Fd用于管理fd,并且拥
  • 2024-05-17UES-07-Set 和 Map
    之前的Set和Map对象模拟Set:letobj=Object.create(null);//创建的对象原型为nullobj.v=true;if(obj.v)//判断值是否存在模拟Map:letobj=Object.create(null);obj.key="value";letv=obj.key;//"value"变通方法问题对象使用的任何类型的属性(
  • 2024-04-25[题解]CF61E Enemy is weak
    CF61EEnemyisweak如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。递推方式见下图。第一行全为\(1\)。要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。要填第\(3\)行的值,就往前找所有\(>\)当前元素的位置,把
  • 2024-04-07C++智能指针学习——小谈引用计数
    目录前言控制块简介共享控制块引用计数与弱引用计数创建过程__shared_ptr__shared_count_Sp_counted_base弱引用计数增加过程再谈共享控制块__weak_count引用计数增加过程弱引用计数的减少过程弱引用计数减为0引用计数的减少过程引用计数减为0参考文章前言本文结合源码讨论std::
  • 2024-04-06智能指针详解
    目录自己管理指针会有什么潜在的问题智能指针的作用share_ptr(共享智能指针)初始化的方式shared_ptr获取原始指针weak_ptr(弱引用智能指针)初始化的方式use_count()expired()lock()reset()返回管理this的shared_ptr循环引用问题图释循环引用:​编辑解决方法:
  • 2024-04-03上电时间计算
    前言:CH573/582上电到运行第一个初始化的时间最快约53ms左右;592最快约22ms左右。注意将串口免按键功能关闭。思路:上电之后从启动文件启动,直接跳转到60M主频进行运行,然后在main函数中翻转io进行判断时间。测试工具,使用功耗计测试(可以看到上电的波形和运行到翻转io的波形)。代码
  • 2024-03-14为什么weak_ptr可以解决循环引用问题
    weak_ptr可以解决循环引用问题的主要原因在于它不会增加对象的引用计数,从而不会导致对象无法被销毁。在循环引用中,两个或多个对象相互持有对方的shared_ptr,导致对象的引用计数始终不为零,即使程序不再使用这些对象,它们也无法被销毁,从而造成内存泄漏。weak_ptr的引入可以打破这
  • 2024-03-02shared_ptr, unique_ptr,weak_ptr
    #include<iostream>#include<memory>classMyClass{public:MyClass(){std::cout<<"MyClassconstructed"<<std::endl;}~MyClass(){std::cout<<"MyClassdestructed"<<std::endl;}v
  • 2024-02-26C++内存管理
    关于C++内存和分配的学习笔记C++内存和分配很容易出问题,为了编写高质量的CPP代码,我们必须了解幕后的工作原理。1.内存泄漏例如:voidleaky(){newint;//这里就是内存泄漏cout<<"我泄漏了一个int的内存!"<<endl;}自由存储区中的数据库无法被栈或者间接访问,这块内存被