当前位置: 首页 > news >正文

c++ 函数参数传递

C++ 中的值传递和地址传递

在 C++ 中,函数参数传递主要有两种方式:值传递地址传递(指针传递和引用传递都属于地址传递的变体)。

1. 值传递

特点

  • 函数接收的是实参的副本
  • 对形参的修改不会影响原始变量
  • 适用于小型数据(基本类型、小型结构体)
void increment(int x) {x++;  // 只修改局部副本
}int main() {int a = 5;increment(a);cout << a;  // 输出 5,原始值未改变return 0;
}

值传递优缺点

优点

  • 安全,原始数据不会被意外修改
  • 实现简单直观

缺点

  • 对于大型对象,复制开销大
  • 无法通过参数返回修改结果

2. 地址传递

2.1 指针传递

void increment(int* x) {(*x)++;  // 解引用并修改原始值
}int main() {int a = 5;increment(&a);  // 传递地址cout << a;      // 输出 6,原始值被修改return 0;
}

2.2 引用传递

void increment(int& x) {x++;  // 直接修改原始值
}int main() {int a = 5;increment(a);  // 看起来像值传递,实际是引用传递cout << a;     // 输出 6return 0;
}

地址传递的优缺点

优点

  • 避免大型对象的复制开销(减少内存拷贝,提升性能)
  • 可以在函数中修改实参的值
#include <iostream>
using namespace std;void func(int a, int b, int c, int* max, int* min)
{// 先假设a是最大值,b是最小值*max = a;*min = b;if (b > a) {*max = b;*min = a;}// 检查c是否比当前最大值大if (c > *max) {*max = c;}// 检查c是否比当前最小值小else if (c < *min) {*min = c;}
}int main()
{int a = 5;int b = 8;int c = 1;int max, min;  // 声明max和min变量func(a, b, c, &max, &min);  // 传递max和min的地址cout << "max = " << max << ", " << "min = " << min << endl;return 0;
}

缺点

  • 可能意外修改原始数据(指针传递)
  • 指针可能为 nullptr(需要检查)
  • 引用不能重新绑定(有时是优点)

3. 对比表格

特性值传递指针传递引用传递
传递内容值的副本内存地址别名(隐式指针)
语法func(int x)func(int* x)func(int& x)
调用方式func(a)func(&a)func(a)
修改原始值不能
空值检查不需要需要不需要
性能小型数据高效大型数据高效大型数据高效
安全性中(可能空指针)
可读性直观需要理解指针直观

4. 现代C++最佳实践

  • 优先使用const引用传递大型只读对象
void printBigObject(const BigObject& obj);
  • 使用智能指针代替裸指针进行资源管理
void process(std::shared_ptr<Resource> res);

5. 示例:三种方式实现swap函数

// 值传递(无法实现swap)
void swap_fail(int a, int b) {int temp = a;a = b;b = temp;
}// 指针传递
void swap_ptr(int* a, int* b) {int temp = *a;*a = *b;*b = temp;
}// 引用传递(推荐)
void swap_ref(int& a, int& b) {int temp = a;a = b;b = temp;
}int main() {int x = 1, y = 2;swap_fail(x, y);cout << x << " " << y;  // 1 2(未交换)swap_ptr(&x, &y);cout << x << " " << y;  // 2 1(已交换)swap_ref(x, y);cout << x << " " << y;  // 1 2(再次交换)return 0;
}

为什么函数内部不能直接修改指针本身

在 C++ 中,函数参数传递默认是值传递,包括指针参数。

1. 指针参数的本质

当你传递指针给函数时:

void func(int* ptr) {ptr = new int(10);  // 这只会修改局部副本
}int main() {int* p = nullptr;func(p);// p 仍然是 nullptr!
}

这是因为:

  • 函数接收到的是指针的副本(指针值的拷贝)
  • 修改这个副本(ptr = ...)不会影响原始指针
  • 这就像值传递一个 int 参数一样

2. 可以修改指针指向的内容

虽然不能直接修改指针本身,但可以修改指针指向的内容

void modifyContent(int* ptr) {*ptr = 10;  // 这会修改指针指向的内存
}int main() {int x = 5;int* p = &x;modifyContent(p);// x 现在是 10
}

3. 如何真正修改指针本身

如果需要修改指针本身(而不仅是指向的内容),你需要:

方法1:使用指针的指针(二级指针)

void modifyPointer(int** ptrPtr) {*ptrPtr = new int(20);  // 修改原始指针
}int main() {int* p = nullptr;modifyPointer(&p);// p 现在指向新分配的 intdelete p;  // 记得释放内存
}

方法2:使用指针的引用(更推荐)

void modifyPointer(int*& ptrRef) {ptrRef = new int(30);  // 直接修改原始指针
}int main() {int* p = nullptr;modifyPointer(p);// p 现在指向新分配的 intdelete p;
}

4. 原始代码问题分析

void func(..., int* max, int* min) {max = &a;  // 这只修改了局部副本min = &b;  // 这只修改了局部副本
}

这些赋值操作只修改了函数内部的指针副本,不会影响 main() 中的原始指针。

5. 解决方案对比

方法示例优点缺点
返回值int* func()简单只能返回一个值
二级指针func(int** max)可以修改多个指针语法复杂
指针引用func(int*& max)语法简洁需要C++引用支持
修改指向的内容func(int* max)最简单需要预先分配内存

6. 最佳实践建议

  1. 如果只需要修改指针指向的内容,使用一级指针
  2. 如果需要修改指针本身,优先使用指针引用 (int*&)
  3. 在C代码中或需要兼容C时,使用二级指针 (int**)
  4. 考虑使用智能指针 (std::unique_ptr&) 来避免内存管理问题

相关文章:

c++ 函数参数传递

C 中的值传递和地址传递 在 C 中&#xff0c;函数参数传递主要有两种方式&#xff1a;值传递和地址传递&#xff08;指针传递和引用传递都属于地址传递的变体&#xff09;。 1. 值传递 特点 函数接收的是实参的副本对形参的修改不会影响原始变量适用于小型数据&#xff08;…...

计算机视觉与深度学习 | 什么是图像金字塔?

图像金字塔详解 图像金字塔 图像金字塔详解1. **定义**2. **原理与公式****2.1 高斯金字塔****2.2 拉普拉斯金字塔**3. **代码示例****3.1 使用OpenCV实现****3.2 手动实现高斯模糊与降采样**4. **应用场景**5. **关键点总结**1. 定义 图像金字塔是一种多尺度图像表示方法,将…...

AI超级智能体教程(五)---自定义advisor扩展+结构化json输出

文章目录 1.自定义拦截器1.2自定义Advisor1.2打断点调试过程1.3Re-reading Advisor自定义实现 2.恋爱报告开发--json结构化输出2.1原理介绍2.1代码实现2.3编写测试用例2.4结构化输出效果 1.自定义拦截器 1.2自定义Advisor spring里面的这个默认的是SimpleloggerAdvisor&#…...

ActiveMQ 集群搭建与高可用方案设计(一)

一、引言 在当今分布式系统盛行的时代&#xff0c;消息中间件扮演着至关重要的角色&#xff0c;而 ActiveMQ 作为一款开源的、功能强大的消息中间件&#xff0c;在众多项目中得到了广泛应用。它支持多种消息传输协议&#xff0c;如 JMS、AMQP、MQTT 等 &#xff0c;能够方便地实…...

MySQL数据操作全攻略:DML增删改与DQL高级查询实战指南

知识点4【MySQL的DDL】 DDL&#xff1a;主要管理数据库、表、列等操作。 库→表&#xff08;二维&#xff09;→列&#xff08;一维&#xff09; 数据表的第一行是 列名称 数据库是由一张或多张表组成 我们先学习在数据库中创建数据表 0、常见的数据类型&#xff1a; 1、…...

RabbitMQ 中的六大工作模式介绍与使用

文章目录 简单队列&#xff08;Simple Queue&#xff09;模式配置类定义消费者定义发送消息测试消费 工作队列&#xff08;Work Queues&#xff09;模式配置类定义消费者定义发送消息测试消费负载均衡调优 发布/订阅&#xff08;Publish/Subscribe&#xff09;模式配置类定义消…...

一种基于重建前检测的实孔径雷达实时角超分辨方法——论文阅读

一种基于重建前检测的实孔径雷达实时角超分辨方法 1. 专利的研究目标与实际问题意义2. 专利提出的新方法、模型与公式2.1 重建前检测(DBR)与数据裁剪2.1.1 回波模型与检测准则2.1.2 数据裁剪效果2.2 数据自适应迭代更新2.2.1 代价函数与迭代公式2.2.2 矩阵递归更新2.3 正则化…...

代购平台如何“说本地话,穿本地衣”

当海外消费者点开一个代购商城&#xff0c;看到满屏机械翻译的中式文案&#xff0c;他们大概率会默默关闭页面。还有数据显示&#xff0c;不符合本地审美的页面设计会导致70%的潜在客户流失&#xff0c;而专业的本地化改造能让订单转化率提升3倍以上。 01 AI翻译&#xff1a;让…...

C++调试(叁):编译qBreakpad并使用其生成Dump文件

目录 1.前言 2.生成Dump文件的第三方库 3.第三方库下载链接 4.编译qBreakpad 5.VS中使用qBreakpad 6.qBreakpad测试程序 前言 在第二篇文章中&#xff0c;我主要讲解了如何使用SetUnhandledExceptionFilter函数设置程序的异常回调&#xff0c;在设置的回调函数中调用MiniDumpWr…...

0基础 | STM32 | TB6612电机驱动使用

TB6612介绍及使用 单片机通过驱动板连接至电机 原因&#xff1a;单品机I/O口输出电流I小 驱动板&#xff1a;从外部引入高电压&#xff0c;控制电机驱动 电源部分 VM&#xff1a;电机驱动电源输入&#xff0c;输入电压范围建议为3.7&#xff5e;12V GND&#xff1a;逻辑电…...

Cycleresearcher:通过自动化评审改进自动化研究

1、引言 迄今为止&#xff0c;整个科学发现过程自动化的挑战在很大程度上仍未解决&#xff0c;特别是在生成和改进符合同行评审工作高标准的研究成果方面。此外&#xff0c;很少有工作涉及迭代反馈的整合&#xff0c;这对保持学术的健全性和新奇至关重要。当前的模型往往难以适…...

深入理解Redis SDS:高性能字符串的终极设计指南

&#x1f4cd; 文章提示 10分钟掌握Redis核心字符串设计 | 从底层结构到源码实现&#xff0c;揭秘SDS如何解决C字符串七大缺陷&#xff0c;通过20手绘图示与可运行的C代码案例&#xff0c;助你彻底理解二进制安全、自动扩容等核心机制&#xff0c;文末附实战优化技巧&#xff…...

【tcp连接windows redis】

tcp连接windows redis 修改redis.conf 修改redis.conf bind * -::*表示禁用保护模式&#xff0c;允许外部网络连接 protected-mode no...

【AI平台】n8n入门6:调用MCP服务(非社区节点)

前言 前边用n8n搭建一个MCP服务&#xff0c;现在&#xff0c;用n8n调用其他服务商提供的MCP服务。本文以高德地图服务为例&#xff0c;记录一下操作过程。 实现案例功能 MCP是啥 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是由Anthropi…...

C++负载均衡远程调用学习之 Dns-Route关系构建

目录 1.LARS-DNS-MYSQL环境搭建 2.LARSDNS-系统整体模块的简单说明 3.Lars-Dns-功能说明 4.Lars-Dns-数据表的创建 5.Lars-Dns-整体功能说明 6.Lars-DnsV0.1-Route类的单例实现 7.Lars-DnsV0.1-Route类的链接数据库方法实现 8.Lars-DnsV0.1-定义存放RouteData关系的map数…...

Linux53 百度网盘运行(下载devtoolset11后仍提示stdc++3.0.29缺失 计划用docker容器隔离运行,计划后续再看)

算了 放弃 都用到docker了 计划先看看系统服务后续再研究吧 百度网盘运行(下载devtoolset11后仍提示stdc3.0.29缺失 计划用docker容器隔离运行 但是由于系统服务未扎实&#xff0c;计划后续再看 重新下了el7的版本 刚才已启动成功 单输入xlock不启动 切换用户也不启动 …...

ASP.NET MVC​ 入门与提高指南八

45. 神经形态计算与 MVC 应用性能革新 45.1 神经形态计算概念 神经形态计算是借鉴生物神经系统的结构和工作原理来设计计算系统。它模仿人脑神经元和突触的工作方式&#xff0c;具备低功耗、高并行性和自适应学习等特性&#xff0c;能在处理复杂感知和认知任务时展现出卓越的…...

Python刷题:流程控制(下)

今天刷的是PythonTip的Python 入门挑战中的题&#xff0c;整体难度不高&#xff0c;适合小白练手以及巩固知识点。下面会进行详细讲解。 每日一句 在无人问津的角落里&#xff0c; 默默努力的人独自发光&#xff0c; 孤独是他们奋斗路上的常客&#xff0c; 却也是成就他们的…...

【Bootstrap V4系列】学习入门教程之 组件-徽章(Badge)和面包屑导航(Breadcrumb)

Bootstrap V4系列 学习入门教程之 组件-徽章&#xff08;Badge&#xff09;和面包屑导航&#xff08;Breadcrumb&#xff09; 徽章&#xff08;Badge&#xff09;一、示例二、根据情境改变外观三、胶囊式徽章&#xff08;Pill badges&#xff09;四、链接 面包屑导航&#xff0…...

结合强化学习RL和SFT各自训练优势,让模型边学边练,从而平衡Zero-RL训练中的模仿和探索!!

摘要&#xff1a;最近在大型推理模型&#xff08;LRMs&#xff09;方面的进展表明&#xff0c;通过简单的基于规则的奖励进行强化学习&#xff08;RL&#xff09;&#xff0c;可以涌现出复杂的行为&#xff0c;例如多步推理和自我反思。然而&#xff0c;现有的零强化学习&#…...

ai之paddleOCR 识别PDF python312和paddle版本冲突 GLIBCXX_3.4.30

这里写自定义目录标题 问题一**解决方案****方法 1&#xff1a;使用符号链接将系统库链接到 Conda 环境** **补充说明****验证修复结果** 问题二&#xff1a;**问题根源****解决方案****1. 确认 TensorRT 安装状态****2. 安装 TensorRT 并配置环境变量****3. 验证 TensorRT 与 …...

C++ 单例模式详解

单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 概念解析 单例模式的核心思想是&#xff1a; 限制类的实例化次数&#xff0c;确保在整个应用程序中只有一个实例存在 提供对该实例的全局访问点 控制共享…...

生成器模式(Builder Pattern)

好问题&#xff01;生成器模式&#xff08;Builder Pattern&#xff09;在现实生活和程序开发中非常常见&#xff0c;它适合创建**“一步一步搭建起来的复杂对象”**。 &#x1f9e0; 一句话定义 生成器模式&#xff08;Builder Pattern&#xff09;是一种将复杂对象的构建过程…...

计算机网络八股文--day4 --传输层TCP与UDP

这是面试中最常考到的一层&#xff1a;端到端&#xff08;也就是进程之间&#xff09;的透明数据传输服务&#xff0c;差错控制和流量控制 该层呈上启下&#xff0c;像上面的资源子网提高服务&#xff0c;并使用下面通信子网的服务 端口&#xff0c;用于唯一标识主机上进程的&…...

大型语言模型个性化助手实现

大型语言模型个性化助手实现 目录 大型语言模型个性化助手实现PERSONAMEM,以及用户资料和对话模拟管道7种原位用户查询类型关于大语言模型个性化能力评估的研究大型语言模型(LLMs)已经成为用户在各种任务中的个性化助手,从提供写作支持到提供量身定制的建议或咨询。随着时间…...

步进电机中断函数解释

STM32 motor111.c 中 HAL_TIM_PeriodElapsedCallback 函数逐行解释 下面我们对 STM32 项目中 motor111.c 文件里的 HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 函数进行逐行解析&#xff0c;帮助初学者理解每一行代码的作用。此函数是在定时器产生更新中断时被调…...

多把锁以及线程死锁问题

在 Java 中&#xff0c;每一个对象都可以作为一把锁&#xff0c;synchronized 通过获取对象头中的锁标志位来实现同步。当一个线程获取到对象的锁后&#xff0c;其他线程就无法再获取该锁&#xff0c;只能等待获取到锁的线程释放锁之后才能继续执行被 synchronized 修饰的代码块…...

Vue 3 Element Plus 浏览器使用例子

Element Plus 是一个基于 Vue 3 的流行开源 UI 库&#xff0c;提供了一系列的组件&#xff0c;帮助开发者快速构建现代化的用户界面。它的设计简洁、现代&#xff0c;包含了许多可定制的组件&#xff0c;如按钮、表格、表单、对话框等&#xff0c;适合用于开发各种 Web 应用。 …...

NoxLucky:个性化动态桌面,打造独一无二的手机体验

在数字时代&#xff0c;手机桌面的个性化设置已经成为许多人表达自我和展示个性的重要方式。今天&#xff0c;我们要介绍的 NoxLucky&#xff0c;就是这样一款功能强大的动态桌面手机应用。它不仅提供了独家的动态壁纸素材库&#xff0c;还支持将抖音、INS等平台的短视频直接设…...

如何在WORD WPS中输入英语音标 批量给英语标注音标

在我国&#xff0c;英语的学习&#xff0c;已经是贯穿小学到大学的课程&#xff0c;英语学习&#xff0c;关键是听说读写&#xff0c;而听说读&#xff0c;都离不开一个字--音&#xff0c;这就涉及到了英语的音标了。音标&#xff08;Phonetics&#xff09;是表示单词发音的一种…...

RUST变量学习笔记

1&#xff0c;作用域概念 捕获环境 2&#xff0c;所有权概念 Rust则是通过所有权和借用来保证内存安全。很多人不理解为啥说Rust是内存安全的&#xff0c;其实就是在默认情况下&#xff0c;你是写不出内存不安全的代码的。 Rust的所有权并不难理解&#xff0c;它有且只有如下…...

n8n工作流自动化平台的实操:本地化高级部署

一、本地高级部署 1.下载 docker pull docker.n8n.io/n8nio/n8n 2.运行 docker volume create n8n_data docker run -dit --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n -e N8N_SECURE_COOKIEfalse -e N8N_RUNNERS_ENABLEDtrue -e N8N_ENFORCE_SETTINGS_FIL…...

【Ansible自动化运维实战:从Playbook到负载均衡指南】

本文是「VagrantVirtualBox虚拟化环境搭建」的续篇&#xff0c;深入探索Ansible在自动化运维中的核心应用&#xff1a; ✅ Ansible核心技能&#xff1a;Playbook编写、角色&#xff08;Roles&#xff09;模块化、标签&#xff08;Tags&#xff09;精准控制 ✅ 实战场景覆盖&a…...

数据赋能(210)——质量管理——可靠性原则

概述 数据可靠性原则确保数据的准确性、完整性、一致性和可信性&#xff0c;是决策和业务活动对数据质量的基本要求。在信息化和数字化快速发展的今天&#xff0c;数据已成为企业的重要资产&#xff0c;数据可靠性直接影响到企业的决策质量和业务活动效果。数据可靠性是数据质…...

二、机器学习中Python变量基础

二、Python变量基础 像C语言和Matlab一样&#xff0c;变量名由字母、数字、下划线组成&#xff08;但不能以数字开头&#xff0c;字母区分大小写&#xff09;变量名不能与内置的函数同名。 根据变量是否可以充当容器&#xff0c;将变量类型分为基本类型和高级类型。 基本变量…...

有机玻璃材质数据采集活性炭吸附气体中二氧化硫实验装置

JGQ112Ⅱ有机玻璃材质数据采集活性炭吸附气体中二氧化硫实验装置 一.实验目的 1.熟悉活性炭吸附剂的特性和在SO2气体净化方面的应用。 2.掌握活性炭吸附法的流程和实验过程中各参数的控制方法。 3.了解主要参数变化对吸附效率的影响。 4.掌握吸附等温线概念和测定方法。 二.技术…...

Javase 基础入门 —— 07 接口

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 概述 接…...

LangChain:重构大语言模型应用开发的范式革命

2022年10月22日&#xff0c;Harrison Chase在GitHub上提交了名为LangChain的开源项目的第一个代码版本。这个看似普通的代码提交&#xff0c;却悄然开启了一场重塑大语言模型&#xff08;LLM&#xff09;应用开发范式的技术革命。彼时&#xff0c;距离ChatGPT引爆全球人工智能浪…...

【现代深度学习技术】现代循环神经网络04:双向循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 &#xff08;一&#xff09;数学与AI的关系&#xff1a;从基础理论到创新思维的回馈 &#xff08;二&#xff09;AI的创造力&#xff1a;突破传统推理的局限 &#xff08;三&#xff09;AI对数学研究的潜在贡献&#xff1a;创…...

链表的回文结构题解

首先阅读题目&#xff1a; 1.要保证是回文结构 2.他的时间复杂度为O(n)、空间复杂度为O(1) 给出思路: 1.首先利用一个函数找到中间节点 2.利用一个函数逆置中间节点往后的所有节点 3.现在有两个链表&#xff0c;第一个链表取头节点一直到中间节点、第二个链表取头结点到尾…...

xLua笔记

Generate Code干了什么 肉眼可见的&#xff0c;在Asset文件夹生成了XLua/Gen文件夹&#xff0c;里面有一些脚本。然后对加了[CSharpCallLua]的变量寻找引用&#xff0c;发现它被XLua/Gen/DelegatesGensBridge引用了。也可以在这里查哪些类型加了[CSharpCallLua]。 public over…...

【Hive入门】Hive与Spark SQL深度集成:通过Spark ThriftServer高效查询Hive表

目录 引言 1 Spark ThriftServer架构解析 1.1 核心组件与工作原理 1.2 与传统HiveServer2的对比 2 Spark ThriftServer部署指南 2.1 环境准备与启动流程 2.1.1 前置条件检查 2.1.2 服务启动流程 2.2 高可用部署方案 2.2.1 基于ZooKeeper的HA架构 3 性能优化实战 3.…...

快速掌握--cursor

Cursor - The AI Code Editor 官网下载安装 详细教程&#xff1a;cursor 下载安装使用&#xff08;保姆教程&#xff09;_cursor下载-CSDN博客 不知道为啥&#xff0c;第一次给我用的是繁体回答 然后改了一下询问方式 codebase就是告诉ai可以从整个项目中找答案&#xff0…...

Linux之基础开发工具(yum,vim,gcc,g++)

目录 一、软件包管理器 1.1、什么是软件包 1.2、yum具体操作 1.2.1、查看软件包 1.2.2、安装软件 1.2.3、卸载软件 1.2.4、安装源 二、编辑器vim 2.1、vim的基本概念 2.2、vim的基本操作 2.3、vim正常模式命令集 2.4、vim末行模式命令集 2.5、替换模式 2.6、视图…...

【计算机视觉】三维重建: OpenMVS:工业级多视图立体视觉重建框架

深度解析OpenMVS&#xff1a;工业级多视图立体视觉重建框架 技术架构与核心算法1. 系统架构设计2. 核心算法解析稠密点云重建表面重建网格优化 实战全流程指南环境配置硬件要求编译安装&#xff08;Ubuntu&#xff09; 数据处理流程输入准备&#xff08;OpenMVG输出&#xff09…...

C++负载均衡远程调用学习之异步消息任务功能与连接属性

目录 1.LarV0.11-异步消息机制的event_loop增添属性分析 2.LARS 3.LarV0.11异步消息发送机制的实现及测试 4.LarV0.11异步消息任务机制bug修复和效果演示 5.LarV0.12链接参数属性的绑定 1.LarV0.11-异步消息机制的event_loop增添属性分析 ## 4) 事件触发event_loop ​ …...

内存性能测试方法

写于 2022 年 6 月 24 日 内存性能测试方法 - Wesley’s Blog dd方法测试 cat proc/meminfo console:/ # cat proc/meminfo MemTotal: 3858576 kB MemFree: 675328 kB MemAvailable: 1142452 kB Buffers: 65280 kB Cached: 992252 …...

游戏引擎学习第256天:XBox 控制器卡顿和修复 GL Blit 伽玛问题

回顾并为今天定下基调 今天的主要任务是让我们的性能分析工具正常工作&#xff0c;因为昨天已经完成了结构性工作。现在&#xff0c;剩下的工作大部分应该是调试和美化。性能分析工具现在应该已经基本可用了。昨天我们在这个方面取得了很大的进展。 接下来&#xff0c;我们将…...

4.29-4.30 Maven+单元测试

单元测试&#xff1a; BeforeAll在所有的单元测试方法运行之前&#xff0c;运行一次。 AfterAll在所有单元测试方法运行之后&#xff0c;运行一次。 BeforeEach在每个单元测试方法运行之前&#xff0c;都会运行一次 AfterEach在每个单元测试方法运行之后&#xff0c;都会运行…...