自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(703)
  • 资源 (1)
  • 问答 (8)
  • 收藏
  • 关注

原创 指针常量和常量指针

迷糊。

2024-05-20 17:09:31 100

原创 硬件上的Serializer和Deserializer 软件方面的Serializer和Deserializer 以及GSML协议

在这些应用程序中,数据必须经过不同计算机或进程之间的传输和解析,Serializer和Deserializer可以将数据序列化为可传输格式并重新构造数据对象,从而实现不同系统之间的通信。硬件serializer/deserializer,简称SerDes,是一种用于在芯片内部和芯片之间传输高速串行数据的技术。SerDes可以将并行数据转换为串行数据进行传输,也可以将串行数据转换为并行数据进行接收。在数据传输中,SerDes通过将并行数据转换为高速串行数据,在有限的物理资源内传输更多的数据。

2024-05-14 11:29:37 247

原创 使用yocto进行linux开发有什么优势? 使用yocto开发linux为什么不用关心硬件?

使用Yocto开发Linux不需要关心硬件,是因为Yocto提供了一套抽象的硬件抽象层(Hardware Abstraction Layer, HAL),该层可以将底层硬件与应用程序隔离开来,使得应用程序不需要关心具体硬件细节。这样做的好处是,用户可以在不同平台上进行应用程序的开发,而不需要对底层硬件进行修改。1.引导加载程序(Bootloader):引导加载程序是第一个软件,它负责初始化硬件、加载操作系统内核到内存中然后启动内核,引导加载程序通常是多级的,其第一级存储在非易失性内存中。

2024-05-13 15:53:34 256

原创 TCP是如何实现可靠传输的 UDP面向报文 TCP面向字节流是什么意思 TCP和UDP分别适用于什么场合

UDP是用户数据报协议,它是一种无连接的传输层协议,它面向报文,也就是说,UDP对应用层交下来的报文,在添加UDP头之后直接发送出去,不会对数据进行拆分和合并。而TCP是传输控制协议,它也是一种传输层协议,它面向字节流,也就是说,TCP对应用层交下来的数据进行拆分和合并后再发送出去。因此,TCP传输的数据单位是字节流,数据流之间没有明显的界限,需要应用层自己解决数据的边界问题。在应用场景上,UDP适合对实时性要求较高的场景,比如音视频传输,而TCP适合对数据完整性和可靠性要求较高的场景,比如文件传输等。

2024-05-10 11:07:02 427

原创 汽车行业芯片 车规级芯片 单车芯片( soc mcu)数量

区别于消费芯片与工业芯片,汽车芯片的工作环境恶劣、安全等级高、使用寿命长,因此车规级芯片要求高可靠性、高安全性、高稳定性。汽车芯片即车规级芯片,标准要高于工业级和民用级芯片,仅次于军工级芯片。不同等级的芯片的标准不一,考虑到安全性、工作环境等一系列因素的影响,汽车级芯片的制作要求远高于工业级芯片和民用级芯片,因此汽车级芯片的价格也明显处于高位。传统燃油车所需汽车芯片数量为600-700颗,电动车所需的汽车芯片数量将提升至1600颗/辆,而更高级的智能汽车对芯片的需求量将有望提升至3000颗/辆。

2024-05-09 14:38:13 453

原创 linux的firmware和hal层

在Android系统中,HAL通常由设备制造商提供,并由Android系统框架加载。在Linux中,固件(firmware)和硬件抽象层(Hardware Abstraction Layer,HAL)是两个不同的概念。固件是运行在硬件设备上的程序,它们通常被用来控制硬件的操作。而HAL是一种软件层,它提供了一种标准化的方式来访问硬件设备,从而使应用程序可以独立于硬件设备。固件是硬件设备的本地代码,它们通常存储在设备的非易失性存储器中,例如ROM或EEPROM中,用于控制硬件设备或执行其它操作。

2024-05-07 11:13:24 247

原创 混合部署 操作系统混合部署

在openEuler Embedded 22.03中,已经集成了OpenAMP相关支持,并与openEuler的SIG Zephyr合作实现了openEuler Embedded与实时操作系统Zephyr在QEMU平台上的混合部署。具体的混合部署方式取决于设备的硬件和软件支持。例如,可以使用虚拟机软件(如VirtualBox)在Linux操作系统上运行Android虚拟机,从而实现Linux和Android的混合部署。需要注意的是,混合部署涉及到设备的硬件和软件兼容性,以及操作系统的配置和管理。

2024-04-30 16:58:56 330 3

原创 可以根据linux终端指令 得出.db文件的数据库类型吗

根据提供的引用内容,可以根据.db文件得出数据库的类型。具体的方法是通过查看.db文件的文件头来确定数据库类型。不同的数据库类型有不同的文件头标识符。因此,通过读取.db文件的文件头,可以确定数据库的类型。可以使用file命令来根据Linux终端指令得出.db文件的数据库类型1。file命令可以用于确定文件的类型,包括数据库文件类型。将"your_file.db"替换为你要检查的.db文件的路径和文件名。执行该命令后,系统将返回.db文件的类型信息,包括数据库类型。

2024-04-29 11:36:32 287

原创 池技术: 连接池 线程池等等

文件池可以在应用程序启动时打开一定数量的文件,并将它们放入池中,应用程序需要时可以从池中获取文件并进行读写操作,使用完毕后再将文件返回给池,以便其他应用程序复用。对象池可以在应用程序启动时创建一定数量的对象,并将它们放入池中,应用程序需要时可以从池中获取对象并使用,使用完毕后再将对象返回给池,以便其他应用程序复用。对象池可以提高对象的利用率,减少对象的创建和销毁的开销。线程池:线程池是一种管理和复用线程的技术,通过预先创建一定数量的线程并将它们放入池中,可以避免频繁创建和销毁线程的开销。

2024-04-29 11:11:37 271

原创 数据库连接池

数据库连接池是负责分配、管理和释放数据库连接的技术。它允许应用程序重复使用现有的数据库连接,而不是重新建立一个新的连接。这样可以提高对数据库操作的性能。数据库连接池就像一个池子,里面存放着多个数据库连接,应用程序需要时可以从池子中获取连接,使用完毕后再将连接归还给池子12。Python# 创建数据库连接池minconn=1,# 从连接池中获取连接# 使用连接进行数据库操作# 将连接归还给连接池# 关闭连接池。

2024-04-29 11:05:03 118

原创 开发过程中遇到一例内存泄漏问题

查找内存使用量较高的进程。如果某个进程的内存使用量持续增长,可能存在内存泄漏问题。top命令将显示系统中所有进程的实时信息,包括内存使用情况。按下Shift + M键,可以按照内存使用量的降序排列进程。在Linux中,可以使用ps命令来查看进程的内存使用情况,以判断是否存在内存泄漏问题。通过以上步骤,可以使用ps和top命令来查看Linux系统中的进程是否存在内存泄漏问题。观察进程的内存使用情况。查找内存使用量较高的进程,并注意其内存使用量是否持续增长。使用top命令来进一步观察进程的内存使用情况。

2024-04-28 14:28:18 120

原创 c c++编程 fmt:占位符

根据提供的引用内容,给出的代码段是一个宏定义,其中的fmt是一个格式化字符串。在宏定义中,fmt是一个占位符,用于接收传入的参数,并在输出时进行格式化替换。具体的格式化规则可以根据具体的使用况来确定,常见的格式化规则包括%s表示字符串,%d表示整数等。在这个宏定义中,fmt可以根据需要进行替换,以满足不同的输出需求。

2024-04-26 19:07:00 207

原创 数据透传和非透传的区别

数据透传是指将原始数据从一个设备传输到另一个设备,不对数据进行任何处理或解析。在透传模式下,数据在传输过程中不会被修改或解析,只是简单地从源设备传输到目标设备。透传模式适用于需要直接传输原始数据的场景,例如传感器数据的采集和传输。在非透传模式下,数据会经过一定的处理或解析,然后再传输到目标设备。非透传模式适用于需要对数据进行处理、解析或转换的场景,例如数据的加密、压缩、校验等。总结来说,数据透传是直接传输原始数据的方式,不对数据进行处理或解析;数据透传和非透传的区别在于数据传输的方式和处理方式。

2024-04-24 17:24:58 525

原创 MTK的meta mode

Android meta作用,Android启动模式介绍

2024-04-24 11:00:20 98 1

原创 从内部防护汽车网络安全——硬件安全模块(HSM)保护ECU主处理器内部

HSM是一种硬件,它以物理方式封装了安全功能。其集成芯片专为IT安全应用而设计,通常具有自己的处理器核心、各种内存(RAM、ROM、闪存等)和硬件密码加速器。此外,HSM必须满足用于车辆应用的特定标准,并且极其有效的集成对于降低成本至关重要。其主要要求包括ECU应用程序和HSM之间的安全接口,以及用于分析故障的调试/测试接口。HSM必须能够以尽可能短的等待时间处理加密信息,并能够承受汽车环境中的标准温度。从根本上说,HSM通过其自己的处理器核心来执行汽车应用场景所需的所有IT安全功能。

2024-04-23 16:54:50 482 2

原创 PCB板 的A样件 B样件 sop样件

PCB板是一种电子元器件的载体,可以用于电路连接和电子元件的安装。SOP样件:是PCB板的最终版本,经过多次改进和验证后的成品。B样件:是PCB板的第二版样品,用于修正和改进A样件的问题。SOP样件是PCB板的最终版本,经过多次改进和验证后的成品。B样件是PCB板的第二版样品,用于修正和改进A样件的问题。A样件:是PCB板的第一版样品,用于验证设计和功能。PCB板是一种用于电路连接和电子元件安装的载体1。A样件是PCB板的第一版样品,用于验证设计和功能。

2024-04-18 16:43:49 115

原创 fstream ifsteam ofstream 介绍

ofstream(输出文件流)用于将数据从内存写入到硬盘文件中,即将数据从程序输出到文件。ifstream(输入文件流)用于将数据从硬盘文件读取到内存中,即将数据从文件输入到程序。可以使用ifstream来打开、读取和处理文件。总结来说,ofstream用于输出数据到文件,而ifstream用于从文件中读取数据。fstream(文件流)是ofstream和ifstream的结合,可以同时进行文件的读写操作。ofstream和ifstream是C++中用于文件操作的两个类。

2024-04-18 15:27:06 121

原创 有的.ssh/config的内容是自动生成的,为什么有的却需要自己配置

自动配置:有些SSH客户端工具(如OpenSSH)在首次连接远程主机时会自动创建一个默认的.ssh/config文件,并将连接信息保存在其中。需要注意的是,无论是自动生成的还是手动配置的.ssh/config文件,都需要遵循一定的格式和语法规则。多个身份验证方式:用户可能需要在不同的远程主机上使用不同的身份验证方式,如使用密码登录或使用SSH密钥登录。多个远程主机:用户可能需要连接多个不同的远程主机,每个主机的连接参数可能不同。有的.ssh/config的内容是自动生成的,为什么有的却需要自己配置。

2024-04-10 16:33:54 272

原创 gerrit 拉取失败

在浏览器gerrit的设置界面设置的邮箱地址和在命令行使用git config --global user.email设置的邮箱地址并不一定需要保持一致。这两个邮箱地址是独立的,可以分别设置。在浏览器gerrit的设置界面设置的邮箱地址主要用于gerrit系统的通知和邮件功能,而在命令行使用git config --global user.email设置的邮箱地址主要用于git提交记录的作者信息。因此,你可以根据需要分别设置不同的邮箱地址。

2024-04-10 14:05:51 417

原创 repo 管理多个git仓库

在repo init成功情况sync的project会在./.repo/repo这个路径,包含repo所有功能逻辑的python脚本,当repo init时,执行的repo是环境变量里面默认的repo,这个repo只是单纯一个几百行的Python脚本。因为repo也是开源项目,设计者出于维护和使用体验,每次repo init时候都要从远端sync最新的版本。而不是完整的repo-project,所以要先去网络远端sync完整的repo-project,

2024-04-09 14:13:40 485

原创 引用[1]: UAT模式是指用户验收测试模式,是在软件开发过程中进行的一种测试模式,用于验证软件是否满足用户需求和预期。在UAT模式下,用户可以对软件进行全面的功能测试、性能测试、安全测试等,以确保软

引用: PROC模式是指生产环境模式,也称为生产模式。在PROC模式下,软件已经经过开发、测试和UAT等阶段的验证,已经准备好投入实际使用。在PROC模式下,软件需要保证高可用性、高性能、高安全性等,以满足实际生产环境的需求。引用[1]: UAT模式是指用户验收测试模式,是在软件开发过程中进行的一种测试模式,用于验证软件是否满足用户需求和预期。在UAT模式下,用户可以对软件进行全面的功能测试、性能测试、安全测试等,以确保软件的质量和稳定性。

2024-03-29 13:26:23 123

原创 TCP TLS

它在应用层和传输层之间提供了一层安全性,通过使用加密算法和数字证书来保护数据的机密性和完整性。TLS通常用于保护HTTP(超文本传输协议)通信,创建HTTPS(安全HTTP)连接。TCP(传输控制协议)是一种面向连接的协议,用于在网络上可靠地传输数据。它提供了数据分段、重传、流量控制和拥塞控制等功能,以确保数据的可靠传输。TCP仅提供了数据的可靠传输,但不提供加密和身份验证。而TLS通过使用加密算法和数字证书,确保数据在传输过程中的机密性和完整性,并对通信双方进行身份验证。

2024-03-22 16:05:36 267

原创 c和c++分别有哪些类型限定符

然而,现代编译器通常会自动优化变量的存储方式,因此register限定符在C++中已经不常用了。mutable:用于修饰类的非静态成员变量,在常量成员函数中允许修改该变量的值。C和C++都有一些类型限定符,用于修饰变量的类型和行为。// C++中的restrict指针声明。// C中的restrict指针声明。// C++中的mutable成员变量声明。// C++中的常量声明。// C++中的易变变量声明。// C中的寄存器变量声明。// C中的易变变量声明。// C中的常量声明。

2024-03-21 16:37:19 175

原创 C++:指针 引用 普通变量适用场景

需要注意的是,指针和引用都可以用于间接访问和修改内存中的数据,但它们有一些区别。使用指针的情况: 指针是一个变量,它存储了一个内存地址。使用普通变量的情况: 普通变量是最基本的数据类型,它存储了一个特定的值。使用引用的情况: 引用是一个已存在对象的别名,它提供了对对象的直接访问。当需要在函数中修改传递的参数值时,可以使用指针作为函数的参数。当需要在函数中修改传递的参数值时,可以使用引用作为函数的参数。当只需要存储和操作一个特定的值时,可以使用普通变量。当需要在函数之间共享数据时,可以使用指针。

2024-03-20 19:23:33 210

原创 SSTS(子系统功能规范) CTS PRD FR MRD

SSTS是指子系统功能规范(Subsystem Functional Specification),它是一种用于描述子系统功能的规范文档1。SSTS相较于功能清单更加具体,它描述了信号交互、功能逻辑、场景分析等内容。SSTS对复杂的功能进行结构性的拆解与分析,并定义了多个部件的组合行为,以及各个子系统的交互信息及方式。抽象性:SSTS相较于CTS更加抽象,通常不涉及包装、实现方案、详细原理、环境测试等内容。通用性:SSTS能够独立于实现方案,为实现方案约定一种设计框架,使供应商在这个框架中进行创新或降低成

2024-03-20 14:23:45 1158

原创 some/ip CAN CANFD

当ECU的信号的值发生了改变,或者发送周期到了,就会发送消息,而不考虑接收者是否需要,这样就会造成总线上出现不必要的信息,占用了带宽。而SOME/IP的出现就是为了解决这一问题,它和CAN网络发送机制不同,它是接收者有需要时才会发送,避免了无效信息对总线造成的影响。既然SOME/IP是一种提供服务的通信协议,我们就可以把请求服务的ECU看成是client,而提供服务的ECU就是server。CAN 是 8Byte,CAN FD 能到 64Byte,而 SOME/IP 能到 1500 Byte。

2024-03-20 11:45:15 441

原创 UDS doip和docan

UDS诊断作为汽车ECU里的一个服务功能,位于应用层,它的实现需要有网络的支撑,我们把基于CAN总线实现的UDS诊断称为 DoCAN,基于Ethernet实现的UDS诊断称为 DoIP。DoIP在传输层以下的规范遵循ISO 13400,而应用层还是遵循ISO 14229不变,这样可以保证UDS诊断在不同车载网络上的可移植性。“ 相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信。DoIP的好处有哪些呢?什么是DoIP协议?

2024-03-20 11:33:34 291

原创 Grok ChatLaw

通过利用先进的人工智能和机器学习算法,Grok能够帮助企业实现更高效的运营和管理,提高竞争力,并为用户提供更好的产品和服务体验。数据安全和隐私保护:在处理和分析大量的数据时,Grok采用了严格的数据安全措施,确保用户和企业的数据不会被泄露或滥用。智能化的推荐系统:Grok具备智能化的推荐系统,能够根据用户的偏好和行为,为其提供个性化的产品和服务推荐。先进的机器学习算法:Grok采用先进的机器学习算法,能够自动学习和优化模型,不断提高预测和决策的准确性。

2024-03-20 11:03:03 171

原创 linux进程 crash之后 ulimit -c unlimited

当ulimit -c命令返回0时,表示生成core文件的大小限制为0,即禁止生成core文件。在Linux中,可以通过设置core文件大小的软资源限制来控制进程崩溃后生成的core文件的大小1。其中,/home/zhenglg/coredump/是崩溃文件的存储路径,core-%e-%p-$t-%E是崩溃文件的名称格式。添加崩溃文件配置信息:将崩溃文件的路径和名称添加到系统配置中。通过以上步骤,当Linux开发板发生崩溃时,系统会生成崩溃文件,可以通过查找崩溃文件中的堆栈信息来排查问题。

2024-03-18 17:54:38 315

原创 网络通信加密算法有哪些及其原理

通过使用非对称加密算法,发送方可以对信息进行加密,而只有接收方拥有私钥才能解密,从而确保只有接收方能够解密信息。其中,Diffie-Hellman算法可以用于在第三者窃听的前提下,双方计算出一个无法被其他人算出的秘密作为对称加密算法的密钥,从而开始对称加密的通信1。流密码(Stream Cipher)也是一种对称加密算法,与块密码(如AES、DES、3DES)不同,它不会将明文按照块进行分割,而是将明文看作一系列比特或字节流,在每次加密时使用与明文长度相等的密钥流进行异或运算2。

2024-03-18 17:25:58 271

原创 docker yocto vscode

Yocto Project还提供了一些预定义的软件层,如Poky和meta-openembedded,这些层包含了大量常用的软件包和组件,可以帮助您快速构建起一个基本的Linux发行版。通过Yocto Project,您可以根据自己的需求选择和配置所需的软件包、内核版本和功能,以生成适合您的嵌入式设备的Linux发行版。Yocto是一个开源项目,用于构建嵌入式Linux发行版。Yocto是一个用于构建嵌入式Linux发行版的开源项目,它提供了一套工具和框架,可以根据特定需求来构建定制化的Linux系统。

2024-03-18 14:30:43 1058

原创 进程间通信 和 线程间通信

然而,互斥锁的缺点是在资源被占用时,其他线程需要等待,造成线程阻塞,降低了并发性能。不同的是,当一个线程尝试获取自旋锁时,如果锁已经被其他线程占用,该线程不会被阻塞,而是会一直在一个循环中自旋等待,直到获取到锁为止。在忙等待期间,线程会一直占用CPU资源,不会被挂起。互斥锁的阻塞是指当一个线程尝试获取已经被其他线程占用的互斥锁时,它会被阻塞,直到该锁被释放。当一个线程获得了互斥锁后,如果该线程在执行过程中发生了异常或者其他原因导致没有释放锁,那么其他线程就会一直等待该锁的释放,从而导致死等的情况发生。

2024-03-18 11:11:13 668

原创 网络中的汉字是怎么传输的

每个汉字对应一个Unicode码点,可以使用UTF-8编码将Unicode码点转换为字节流。UTF-8是一种可变长度的编码方式,它可以将Unicode码点编码成1到4个字节的字节序列。在发送端,将汉字按照UTF-8编码转换为字节流后,可以通过网络协议(如HTTP)将字节流发送给接收端。在接收端,接收到字节流后,可以通过解码操作将字节流转换回Unicode编码,然后再将Unicode编码转换为可显示的汉字。在接收端,接收到字节流后进行解码操作,将字节流转换回Unicode编码。通过网络协议发送字节流。

2024-03-13 11:35:34 327

原创 人工智能(AI)-机器学习-深度学习-大语言模型LLM(chatgtp)

【一文读懂“大语言模型” - CSDN App】

2024-03-13 11:01:44 402

原创 RIL daemon Android系统中的一个重要组件,它负责处理与移动网络通信---与基带芯片通信

通常情况下,手机厂商会根据基带芯片的要求进行硬件设计,并在Android系统中配置相应的RIL daemon与基带芯片进行通信。与基带芯片通信:RIL daemon通过与基带芯片的通信接口,实现与移动网络的连接和数据传输。总之,RIL daemon在Android系统中扮演着重要的角色,它实现了Android设备与移动网络之间的通信和数据传输功能,保证了手机的正常通信能力。以上是常见的SOC与基带芯片之间的硬件通信接口,不同的芯片厂商和产品可能会采用不同的接口标准。

2024-03-12 14:50:44 579

原创 安卓开发-----activity ,services,broadcast receiver,content provider

广播消息可以来自系统或其他应用程序,它们可以传递一些重要的信息,如电池电量低、网络连接状态变化等。活动(Activity):活动是安卓应用程序的基本组成部分,它提供了用户界面和交互的能力。AndroidManifest.xml:这是apk的清单文件,它包含了应用程序的基本信息,如应用程序的包名、版本号、权限等。资源(Resource):资源是应用程序使用的非代码资源,如图像、字符串、颜色等。资源文件:这些文件包括应用程序使用的图片、布局文件、字符串等资源,它们被编译成二进制格式并存储在apk中。

2024-03-08 15:23:43 541

原创 定义变量(内存)时 定义在堆区 栈区 还是全局区-根据所需变量的特点选择合适的内存区域-作用范围和生命周期

当需要定义大内存数组时,通常应该将其定义在堆区。堆区是用于动态分配内存的区域,它的大小由操作系统决定。在堆区分配内存可以通过使用关键字"new"来实现,例如:int* arr = new int[1000]。在堆区分配的内存需要手动释放,以避免内存泄漏,可以使用关键字"delete"来释放内存,例如:delete[] arr。相比之下,栈区是用于存储局部变量和函数调用的区域,它的大小有限。在栈区定义的数组大小通常较小,且会随着函数的结束而自动释放,无需手动释放。

2024-03-05 10:59:09 277 1

原创 git hooks

git push origin HEAD:refs/for/master 是将当前分支的最新提交推送到远程仓库的master分支,并且将提交标记为待审核状态。在Git中,hooks是一些脚本,它们在特定的Git事件发生时被触发。你可以根据需要选择其中的一个示例文件,并将其复制为不带有.sample后缀的文件名。要求下载hooks通常是为了在代码提交时执行一些额外的检查或操作,以确保代码的质量和一致性。完成以上步骤后,当你进行代码提交时,相应的hook将会被触发,并执行你定义的操作或检查。

2024-03-04 14:58:00 358

原创 mutable关键字 mutable_xxx_xxx()

问题来了,如果我想在常成员函数内部,修改对象的某个成员变量时,怎么办?这时,就需要 引入 mutable,将该对象的成员变量定义为 mutable 变量,但是,我们会把定义为mutable的这个变量,看做不属于对象的状态。这样,即使在常成员函数内部,mutable变量也可以被修改,与此同时,常成员函数内部,对于对象的其他成员变量(即对象的内部状态)还是不能修改的!这么做的目的是,在常成员函数内部,不允许修改调用它的对象的内部状态(即不许修改对象的成员变量的值)。没关系,继续往下看!一定要看完就豁然开朗了!

2024-03-04 13:24:42 145

原创 一直报段错误----函数内部的结构体指针必须使用malloc开辟空间吗

需要注意的是,如果使用了malloc函数进行内存分配,记得在不再需要使用结构体指针时,使用free函数释放相应的内存空间,以避免内存泄漏。3,作为函数参数传递:如果结构体指针是作为函数参数传递进来的,那么在函数内部可以直接使用传递进来的指针,而无需再进行内存分配。2, 使用静态分配:如果结构体的大小是已知的,并且在函数内部只需要临时使用,可以使用静态分配的方式来创建结构体指针。需要注意的是,在使用完结构体指针后,应该使用free函数释放所分配的内存,以避免内存泄漏。

2024-02-28 16:18:54 269

USB知识点,usb相关概念,usb的从上电到数据收发的流程

USB知识点,usb相关概念,usb的从上电到数据收发的流程。

2022-03-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除