- 2024-11-15c11智能指针
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu
- 2024-11-15C++ RAII 范式指南
1.RAII概述RAII(ResourceAcquisitionIsInitialization)是C++中最重要的资源管理机制之一,它将资源的生命周期与对象的生命周期绑定,确保资源的安全使用和自动释放。历史背景:RAII概念由BjarneStroustrup在1984-1989年间提出最早用于解决C++异常处理中的资源泄
- 2024-11-14c++ 标准 智能指针 与 qt 智能指针 对比
C++标准库提供了std::unique_ptr和std::shared_ptr等智能指针,而Qt则提供了QScopedPointer、QSharedPointer和QWeakPointer等自己的智能指针。两者在设计上有一些相似之处,但也存在一些关键的差异。下面是C++标准智能指针和Qt智能指针的详细对比:1.std::uniq
- 2024-11-13结构体和指针
指针与结构体【1】、指针变量是一个占位符,底层指向是一个内存地址。&:取地址符&a:取出a变量的地址1、指针的概念b内存地址0x11111111111,值:500varbint=500a指针变量,指向了一个内存地址0x11111111111变量a持有了变量b的地址。这个就是a指向了bpack
- 2024-11-13C语言指针详解:用法与实例
目录C语言指针详解:用法与实例引言1.指针基础1.1什么是指针?1.2如何声明指针?1.3获取变量的地址1.4解引用指针2.指针的高级用法2.1指针和数组2.2指针和函数参数2.3指针和动态内存分配3.指针的注意事项3.1空指针3.2悬空指针3.3指针运算C语言指针详
- 2024-11-12数组指针与指针数组
一、指针数组指针数组是一个数组,其中每个元素都是一个指针。这种数组可以用来存储多个指针,每个指针可以指向不同的数据类型。#include<iostream>usingnamespacestd;intmain(){inta=10,b=20,c=30;int*ptr_array[3];//定义一个指针数组,包含3个
- 2024-11-12C++笔记---智能指针
1.什么是智能指针1.1 RALL设计思想RAII(ResourceAcquisitionIsInitialization,资源获取即初始化)是一种资源管理类的设计思想,广泛应用于C++等支持对象导向编程的语言中。它的核心思想是将资源的管理与对象的生命周期紧密绑定,通过在对象的构造函数中获取资源,并在析构函数中
- 2024-11-11c++ 对于传递引用和传递值的理解
首先先上一段c++代码,可以看出foo函数参数是引用类型,bar函数参数是值类型typedefstructA{intx;inty;}A;voidfoo(A&a){ra.x++;}voidbar(Aa){a.x++;}intmain(){Aa={1,2};foo(a);bar(a);return0;}在vscode
- 2024-11-11实验3
任务1button.hpp1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()const;14
- 2024-11-10【读懂Linux】基础IO
学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客目录 循环渐进Forward-CSDN博客系统文件I/O接口介绍writereadcloselseek,类比C文件相关接口open函数返回值文件描述符fd文件描述符的分配规则重定向使用dup2系统调用FILE
- 2024-11-10实验3 类和对象_基础编程2
实验任务1:代码:1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()const;14
- 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-08C++中的std::shared_ptr
std::shared_ptr 是C++11标准库中的智能指针类型,用于管理动态分配的对象。与传统指针不同,std::shared_ptr 自动管理内存,并在不再使用时自动释放对象,以避免内存泄漏。它是一种共享所有权的智能指针,即可以让多个 std::shared_ptr 指向同一个对象,并且会记录有多少个 std::shar
- 2024-11-08天天学编程Day10
今日两道编程题LCR140. 训练计划IIclassSolution{public:ListNode*trainingPlan(ListNode*head,intcnt){//我选择使用双指针方法定义两个位置在头结点的指针//先让快指针先走cnt个位置然后让两个指针同时走//当快指针走到空节
- 2024-11-08指针简介:欲送你花,先找你家
从本质上来说,指针(pointer)是一个值为内存地址的变量。它指出指针的两个核心:①指针是一个变量。它具有和其他变量一样的属性:有名、有值、有地址(隶属“三友”集团)。②指针的值是内存地址。这指出了指针区别于其他变量的特殊性,它的值是内存地址。一、指针的命名常用以下两个名
- 2024-11-08【C++进阶】智能指针的使用及原理(1)
1.智能指针的使用场景分析下面程序中我们可以看到,new了以后,我们也delete了,但是因为抛异常导,后面的delete没有得到执行,所以就内存泄漏了,所以我们需要new以后捕获异常,捕获到异常后delete内存,再把异常抛出,但是因为new本身也可能抛异常,连续的两个new和下面的Divide都可能会抛异
- 2024-11-08C# 中的 IntPtr
C#中的IntPtrIntPtr是C#中用于表示指针或句柄的结构,它在处理非托管代码、与WindowsAPI交互或管理非托管资源时非常有用。IntPtr是一个平台无关的类型,能够在32位和64位系统之间自适应,通常用于存储指针地址或句柄。特点平台无关性:IntPtr在32位和64位应用程序
- 2024-11-07【C++11】智能指针
一.为什么需要智能指针 学习C++的人,一直在接触裸指针,一边感受着它的强大,一边感受着它的坑爹。当然,坑不坑爹在于开发者,指针本身近乎完美,但奈何用的人比较猥琐,给自己埋下无数的坑,还哭喊着指针不好用,那么今天要介绍的智能指针可以释放大家在使用裸指针时的一些压
- 2024-11-07C++循环引用指的是什么,在使用过程当中需要注意什么问题
C++中的循环引用是指两个或多个对象相互持有对方的引用,导致这些对象无法被自动释放,从而造成内存泄漏。循环引用主要发生在使用智能指针(如 std::shared_ptr)管理对象生命周期时。以下是循环引用的具体解释及其使用中需要注意的问题:循环引用的形成当两个对象A和B互相持
- 2024-11-07CUDA开始的GPU编程 - 第四章:C++封装GPU上的数组
第四章:C++封装GPU上的数组std::vector的秘密:第二模板参数**你知道吗?**std::vector作为模板类,其实有两个模板参数:std::vector<T,AllocatorT>那为什么我们平时只用了std::vector呢?因为第二个参数默认是std::allocator。也就是std::vector等价于std::vector<T,s
- 2024-11-06C++智能指针
C++智能指针以引用计数为基础的智能指针,引用计数的管理逻辑如下:除了初始化对象本身外,每个构造函数(拷贝构造函数除外)还要在堆上创建一个引用计数,用来记录有多少个对象共享状态。当我们创建一个对象时,只有一个对象共享状态,因此将引用计数初始化为1;拷贝构造函数不分配新的计数器
- 2024-11-06malloc分配内存失败会导致什么问题?
malloc 是C标准库中的一个函数,用于动态分配内存。接下来解释分配内存失败的原因,危害以及解决方法。原因内存不足:操作系统的可用内存不足以满足请求的分配。这可能是由于系统中正在运行的程序占用了大量内存。请求的大小超出限制:请求分配的内存块过大,超出了系统的内存
- 2024-11-06【C/C++】野指针概念以及避免方式
C语言中的野指针详解野指针(WildPointer)是指向未定义或非法内存位置的指针。本博客讲解野指针的概念、产生原因、危害以及如何避免野指针的问题。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