- 2024-11-17cmake系列-怎么在构建C++库文件时动态的选择构建动态库还是静态库
在之前我们介绍的内容里,关于构建动态库还是静态库都是在CMakeLists.txt里指定的,那如果一个解决方案原来是构建动态库,然后因为某些原因又希望构建静态库了,那岂不是还要修改CMakeLists.txt,对于平时用的构建系统来说好像还真的是需要修改,哈哈,但是cmake确实有方案能够在不用修改
- 2024-11-16CPP 智能指针
CPP智能指针Created:2024-06-30T20:43+08:00Published:2024-11-16T23:17+08:00Categories:C-CPP智能指针的作用智能指针最初使的作用就是离开作用域调用析构函数。因为malloc出来的东西只能通过指针持有,栈上的对象在离开作用域后会自动调用析构函数,但是裸指针会不调
- 2024-11-16[C++] 智能指针
文章目录智能指针的使用原因及场景分析为什么需要智能指针?异常抛出导致的资源泄漏问题分析智能指针与RAIIC++常用智能指针使用智能指针优化代码优化后的代码优化点分析析构函数中的异常问题解决方法RAII和智能指针的设计思路详解什么是RAII?RAII的工作原理智能
- 2024-11-1626. 智能指针
一、什么是智能指针 当我们使用new关键字为指针变量动态申请内存时,但是使用完毕之后,我们可能会忘记使用delete关键字手动回收内存。因此,C++中提供了智能指针。当智能指针过期时,其析构函数将使用delete来释放内存。因此,如果将new返回的地址赋给智能指针对象,将无
- 2024-11-15c11智能指针
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu
- 2024-11-14c++ 标准 智能指针 与 qt 智能指针 对比
C++标准库提供了std::unique_ptr和std::shared_ptr等智能指针,而Qt则提供了QScopedPointer、QSharedPointer和QWeakPointer等自己的智能指针。两者在设计上有一些相似之处,但也存在一些关键的差异。下面是C++标准智能指针和Qt智能指针的详细对比:1.std::uniq
- 2024-11-13SharePoint Online共享链接的参数是做什么的?
前言今天,被一个小朋友问到,我们分享SharePointOnline文件的时候,为什么总有奇怪的参数?正文1.链接的例子https://<TenantName>.sharepoint.com/:w:/r/sites/<SiteName>2.简单的说明其实,链接是为了方便我们知道分享的文件的类型/:w–MicrosoftW
- 2024-11-12C++笔记---智能指针
1.什么是智能指针1.1 RALL设计思想RAII(ResourceAcquisitionIsInitialization,资源获取即初始化)是一种资源管理类的设计思想,广泛应用于C++等支持对象导向编程的语言中。它的核心思想是将资源的管理与对象的生命周期紧密绑定,通过在对象的构造函数中获取资源,并在析构函数中
- 2024-11-10cpp智能指针
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu
- 2024-11-10C++之智能指针
智能指针是C++中的一种资源管理工具,用于自动管理动态分配的内存。它们通过在不再需要时自动释放内存来防止内存泄漏。C++标准库提供了几种不同类型的智能指针,每种都有其特定的用途和行为。主要的智能指针类型std::unique_ptrstd::shared_ptrstd::weak_ptr1. std::unique_pt
- 2024-11-09在 C++ 中,实现线程同步主要有以下几种常见方法
互斥锁(Mutex)原理:互斥锁用于保护共享资源,确保在同一时刻只有一个线程能够访问被保护的资源。当一个线程想要访问共享资源时,它首先尝试获取互斥锁。如果锁已经被其他线程持有,那么该线程会被阻塞,直到锁被释放。一旦获取到锁,线程就可以安全地访问共享资源,访问结束后再释放锁,以便其
- 2024-11-08C++中的std::shared_ptr
std::shared_ptr 是C++11标准库中的智能指针类型,用于管理动态分配的对象。与传统指针不同,std::shared_ptr 自动管理内存,并在不再使用时自动释放对象,以避免内存泄漏。它是一种共享所有权的智能指针,即可以让多个 std::shared_ptr 指向同一个对象,并且会记录有多少个 std::shar
- 2024-11-08【C++进阶】智能指针的使用及原理(1)
1.智能指针的使用场景分析下面程序中我们可以看到,new了以后,我们也delete了,但是因为抛异常导,后面的delete没有得到执行,所以就内存泄漏了,所以我们需要new以后捕获异常,捕获到异常后delete内存,再把异常抛出,但是因为new本身也可能抛异常,连续的两个new和下面的Divide都可能会抛异
- 2024-11-07无域控的环境下实现仅允许指定电脑才能安装某款软件的方案
背景公司没有使用域控,也没有任何终端管理软件,购买了正版Xshell软件,要求实现仅允许提交过申请的电脑才能安装此软件难点因为没有使用域控,也没有任何终端管理软件,软件分发存在可复制性,难以管控实现思路1、内网要有一台设备提供服务,用于提供鉴别设备是否允许安装2、软件
- 2024-11-07C++循环引用指的是什么,在使用过程当中需要注意什么问题
C++中的循环引用是指两个或多个对象相互持有对方的引用,导致这些对象无法被自动释放,从而造成内存泄漏。循环引用主要发生在使用智能指针(如 std::shared_ptr)管理对象生命周期时。以下是循环引用的具体解释及其使用中需要注意的问题:循环引用的形成当两个对象A和B互相持
- 2024-11-06C++智能指针
C++智能指针以引用计数为基础的智能指针,引用计数的管理逻辑如下:除了初始化对象本身外,每个构造函数(拷贝构造函数除外)还要在堆上创建一个引用计数,用来记录有多少个对象共享状态。当我们创建一个对象时,只有一个对象共享状态,因此将引用计数初始化为1;拷贝构造函数不分配新的计数器
- 2024-11-05c++:智能指针
文章目录前言一、内存泄漏1.1内存泄漏的定义1.2内存泄漏的常见原因1.3内存泄漏的危害二、智能指针的用法和模拟实现2.1RAII2.1.1RAII的工作原理2.1.2RAII的优点2.2智能指针的原理和设计思路2.3智能指针的种类和特点2.3.1std::auto_ptr2.3.2std::unique_ptr2.3
- 2024-11-04深入理解 `std::shared_ptr`:原理、用法及其线程安全性
在C++中,智能指针是现代内存管理的重要工具,尤其是在复杂的多线程环境中,能显著减少内存泄漏和悬空指针等问题。std::shared_ptr是C++11引入的一种共享智能指针,通过引用计数机制管理对象的生命周期。本文将详细介绍std::shared_ptr的基本用法、循环引用问题、线程安全性及其局
- 2024-11-03智能指针介绍和方法
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型unique_pt
- 2024-11-02C++ 手撕--共享式智能指针(shared_ptr)的简单实现
C++手撕--共享式智能指针(shared_ptr)的简单实现共享式智能指针(shared_ptr):#include<iostream>#include<mutex>usingnamespacestd;template<typenameT>classShared_ptr{private:T*ptr;int*ref_count;std::mutex*mtx;voidrelease(){
- 2024-11-01智能指针使用
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型unique_pt
- 2024-11-01【C++】智能指针的正确使用方式
本文将从这几方面讲解智能指针:智能指针的应用场景分析智能指针的性能分析:为什么shared_ptr性能比unique_ptr差指针作为函数参数时应该传,传值、传引用,还是裸指针?对于智能指针的使用,实际上是对所有权和生命周期的思考1.unique_ptr:专属所有权1.1unique_ptr介绍我们大
- 2024-10-31ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memor
简介:使用YOLO11在Docker里面训练,出现一堆报错#ImageWoof数据集分析狗fromultralyticsimportYOLO#Loadamodelmodel=YOLO("yolo11n-cls.pt")#loadapretrainedmodel(recommendedfortraining)#Trainthemodelmodel.train(data="imagewoof160"
- 2024-10-29Python中使用共享变量+信号量实现进程间的实时通信
【Python程序1中】importctypesimportposix_ipcimportmultiprocessingfrommultiprocessingimportshared_memory#如果系统中已经存在名为/semaphore1的信号量对象,Python并不会重新初始化它,而是使用现有的信号量,#导致现有的信号量可能有残留状态,使得acquire()一直阻
- 2024-10-29c++11智能指针
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型unique_pt