- 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-07C语言中指针类型强转之后解引用出现问题
函数中传入的参数是指针类型但是该指针类型是类型强转之后传入函数在函数调用过程中解引用指针的时候出现了keil-hardfault。首先查看MSP的值然后在内存中输入msp的值在反汇编窗口中输入地址找到出错的函数发现故障原因是在解引用指针时,由于指针类型出现强转,需要对
- 2025-01-07Golang基础-值类型、引用类型区别
在Go语言中,引用类型和值类型是两种不同的数据类型,它们在内存中的存储和传递方式有很大的区别。理解这两者的定义和适用场景对有效地编写Go代码至关重要。1.值类型(ValueTypes)定义值类型是指变量直接保存数据的副本。当你将一个值类型的变量赋值给另一个变量时,实际上是
- 2025-01-06js Weakset和Set 对比,弱引用和强引用
Set和WeakSet都保存对对象(如obj1)的引用,但它们处理这些引用的方式不同,这直接影响到垃圾回收的行为。强引用vs.弱引用强引用:当一个对象被Set引用时,Set持有的是对该对象的强引用。这意味着只要Set存在并且包含这个对象,JavaScript的垃圾回收机制就不会回收这个对象,即
- 2025-01-06js WeakMap 作用和使用
WeakMap是JavaScript中的一种键值对集合,类似于Map,但它有一些独特的特性,特别是关于其键的引用方式。WeakMap的键只能是对象,并且这些键是以弱引用的方式持有的。这意味着如果一个对象只被WeakMap引用而没有其他强引用,那么这个对象可能会在任何时候被垃圾回收。因此,WeakMap适
- 2025-01-06java和集合和JVM
Java语言有哪些特点?面向对象(封装,继承,多态),平台无关性(Java虚拟机实现平台无关性),可靠性(具备异常处理和自动内存管理机制)。.java文件(java源代码文件)经javac编译器编译成.class文件(字节码文件)JVM类加载器再加载字节码文件,解释器逐行解释执行;OpenJDK开源;Java和C++的区别?
- 2025-01-06CAD中的四个关系,HardOwner,SoftOwner,HardPointer,SoftPointer
起因:在学习在CAD中附加自定义的数据的时候,发现的一个知识点。在组码表中,330,340,350,360四个键分别对应四种关系。如下图:在DataCell里也有类似的操作:总结起来,就是在CAD中,我们可以人为地给两个DBObject建立某种关系,即:软指针,硬指针,软所有者,硬所有者。 后
- 2025-01-05Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
在MyBatis的映射文件中,如果A标签通过 <include> 引用了B标签的内容,那么B标签必须定义在A标签的前面。这是因为MyBatis在解析XML文件时是按顺序进行的,它需要在解析到 <include> 标签时已经知道被引用的内容。示例假设我们有一个映射文件 UserMapper.xml,其
- 2025-01-05C++函数的出参
在C#中,在函数或方法的参数前添加上out或ref时,这个参数就是出参了。在C++中主要是通过指针和引用实现来类似的功能。#include<iostream>//使用指针作为出参//getValues接受两个指向整数的指针,并通过这些指针修改了调用者提供的变量的值voidgetValues(int*a,int*b)
- 2025-01-04C++中值传递和引用传递的区别
C++中值传递和引用传递的区别值传递:在函数调用时,传递的是实际参数的副本,因此函数内对参数的修改不会影响到实际参数。引用传递:在函数调用时,传递的是实际参数的引用,因此函数内对参数的修改会影响到实际参数。值传递示例代码:classA{public:A(){std::cout<<
- 2025-01-03Android稳定性(一):内存使用指南
本文同步发布于公众号:移动开发那些事:Android稳定性(一):内存使用指南1背景团队内目前使用Flutter来开发移动端的应用,不可避免会涉及到一些原生代码的编写,而团队内有好些iOS出身的同学在写Android应用时,由于不熟悉Android的内存管理,写的代码一眼看上去没啥问题,但细看就会发现有
- 2025-01-03C中如何理解指针和引用的区别?
在C语言中,指针和引用是两个重要的概念,它们都与内存地址和变量之间的关系有关,但它们在定义、使用和特性上存在显著的区别。下面将详细解释指针和引用的区别,并通过示例代码进行说明。指针的基本概念指针是一种变量,其值为另一个变量的地址,即内存位置。通过使用星号(*)声明指针变量
- 2025-01-03c++之左值引用 右值引用 万能引用
详细大家无论是在阅读代码,还是阅读文档的时候经常看到这几个词或者对应的符号,但是可能也不是很清楚他们到底有哪些区别,本文将对这几个概念详细深入的介绍。左值引用左值引用的表现形式,如下所示:intx=2;int&a=x; //正确,这里a就是一个左值引用int&a=2;//错误,临
- 2025-01-01什么时候会触发垃圾回收?
在前端开发中,垃圾回收的触发时机主要取决于JavaScript引擎的实现和当前的运行环境。不过,通常来说,垃圾回收可能会在以下几种情况下被触发:内存占用超过阈值:当内存占用超过一个特定的阈值或达到某个预定的分配量时,垃圾回收器可能会被触发。这是为了避免内存占用过多而导致程序性能
- 2024-12-31rust学习十五.3、智能指针相关的Deref和Drop特质
一、前言智能指针为什么称为智能指针?大概因为它所包含的额外功能。这些额外的功能使得编码或者运行时让指针看起来更有效、并体现某些“智”的特征,所以,我猜测这应该是rust发明人这么称呼此类对象为智能的原因。 据前面有关章节所述,我们知道智能指针多基于结构体(struct)扩
- 2024-12-31由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
作者:京东保险王奕龙本节我们来了解Mybatis是如何处理ResultMap的循环引用,它的解决方案非常值得在软件设计中参考。另外作为引申,大家可以了解一下Spring是如何解决Bean的循环注入的。以单测org.apache.ibatis.submitted.permissions.PermissionsTest#checkNestedResult
- 2024-12-31js中变量回收原则是什么?
在JavaScript中,变量回收的原则主要基于垃圾回收机制,该机制自动处理不再使用的变量,并释放它们所占用的内存空间。以下是关于JavaScript变量回收原则的详细解释:全局变量不会被回收:全局变量在整个程序执行期间都保持存在,因此它们不会被垃圾回收器回收。局部变量会被回收:局部变
- 2024-12-30C++引用
目录1.引用的声明与初始化2.别名3.引用与指针的区别4.常量引用|const与引用5.引用作为函数参数6.引用返回值7.右值引用(C++11新特性)8.引用的实现 C++中的引用是一种特殊的类型,它是一个别名(或者叫作“引用名”),用来指向另一个变量。
- 2024-12-30html 笔记梳理
style属性用于改变HTML元素的样式。通过HTML样式,能够通过使用style属性直接将样式添加到HTML元素,或者间接地在独立的样式表中(CSS文件)进行定义。background-color属性为元素定义了背景颜色:<bodystyle="background-color:yellow"> //大背景是黄
- 2024-12-29c++11新特性
智能指针1.管理内存释放问题2.共享所有权和转移//用的最多,内涵一个指向计数器,计数器归0的时候,释放对应的内存//指针本身在栈里面存储,指向的内容是放在堆里面的,栈可以自动释放,堆不可以shared_ptr//检测内存有没有被释放,被释放了就不用了,没被释放才做一些操作weak_ptr//纯
- 2024-12-29引用与常量 - 引用类型、const关键字
引言在C++中,引用和const关键字是两个非常重要的概念。引用提供了一种方便的方式来操作变量的别名,而const关键字则用于定义不可修改的常量或指针。正确理解和使用这两个特性可以提高代码的安全性和可读性。本文将详细介绍引用的基本概念和操作,以及const关键字的各种用法,帮助初
- 2024-12-29在js函数的参数都是按值传递的吗?
在JavaScript中,函数的参数传递方式实际上是基于变量的类型来决定的。JavaScript中的数据类型大致可以分为两类:原始类型(PrimitiveTypes)和对象类型(ObjectTypes)。原始类型(PrimitiveTypes):这些类型包括Number、String、Boolean、Null、Undefined、Symbol(ES6新增)和BigInt(ES10新增)。
- 2024-12-29请说说你对JS引用赋值,按值赋值的理解
在JavaScript中,变量的赋值可以大致分为两类:引用赋值和按值赋值。这种分类主要基于JavaScript的数据类型,特别是原始类型(PrimitiveTypes)和对象类型(ObjectTypes)。按值赋值(ValueAssignment)按值赋值通常发生在处理原始类型的数据时,这些原始类型包括:Number、String、Boolean、Nul
- 2024-12-29如何理解在js中访问变量有按值和按引用两种方式?
在JavaScript中,理解变量的访问方式——按值访问和按引用访问——是理解语言数据结构和行为的关键。这两种方式主要取决于变量的数据类型。按值访问(PassbyValue)在JavaScript中,原始类型(PrimitiveTypes)的数据是按值访问的。原始类型包括:Number、String、Boolean、Null、Un
- 2024-12-28C++中的完美转发
完美转发背景:C++的参数传递常常面临以下问题:左值和右值:左值和右值在处理上有区别,通常左值被传递时需要按值传递,而右值可能会被按引用传递以避免不必要的拷贝引用折叠(ReferenceCollapsing):C++中的引用折叠规则(T&&类型的引用会折叠成不同的类型)也会影响完美转发的实现需