- 博客(97)
- 收藏
- 关注

原创 C++经典面试题:内存泄露是什么?如何排查?
1.内存泄露的定义:内存泄漏简单的说就是申请了⼀块内存空间,使⽤完毕后没有释放掉。它的⼀般表现⽅式是程序运⾏时间越⻓,占⽤内存越多,最终⽤尽全部内存,整个系统崩溃。⾸先可以通过观察猜测是否可能发⽣内存泄漏, Linux 中使⽤ swap 命令观察还有多少可⽤的交换空间,在⼀两分钟内键⼊该命令三到四次,看看可⽤的交换区是否在减少。当然也有⽤于内存调试,内存泄漏检测以及性能分析的软件开发⼯具 valgrind 这样的⼯具来进⾏内存泄漏的检测。3.在编译时使用 -fsanitize=address。
2023-10-26 19:49:56
1490

原创 C++面试常见问题多态如何实现?虚函数的底层如何实现?
在语法上, 成员函数之前加virtual关键字就让这个函数变成虚函数虚函数的作用是实现多态性,即通过基类访问派生类的函数在虚函数后面添加 =0 ,虚函数就成为纯虚函数在很多情况下,基类生成对象很不合理。为了解决这个问题,引入了纯虚函数的概念,将函数定义为纯虚函数,派生类中必须重写实现纯虚函数。对于实现了纯虚函数的子类,该纯虚函数在子类中就变成了虚函数。
2023-10-24 11:44:38
432

原创 操作系统 常见面试问题之系统寻址空间是多大?虚拟地址与物理地址?内存映射是什么?详细总结
C++ 常见面试问题之系统寻址空间是多大?虚拟地址与物理地址?内存映射是什么?详细总结
2023-10-23 16:47:18
3003
1
原创 fopen和open 等区别是什么?文件描述符与文件描述指针区别
可以使用`fileno()`函数获取文件描述符,例如:`int fd = fileno(fp);`,其中`fp`是`FILE*`类型。文件指针:由C标准库提供,类型为`FILE*`,用于高级文件操作(如`fprintf`, `fscanf`等)。文件描述符:由操作系统提供,类型为整数(如`int`),用于底层系统调用(如`read`, `write`)。fopen是C标准库中用于打开文件的函数,返回一个`FILE`指针,而不是直接的文件描述符。fopen返回值是 文件指针。open 返回值是文件描述符。
2025-03-23 22:20:02
217
原创 system()执行和shell脚本的优劣
以下是 C 语言system()移动文件与 Shell 脚本移动文件的效率对比分析及原因解析:system()会调用fork()创建子进程,然后在子进程中执行指定的命令。这意味着每次调用system("mv ...")都会产生一次进程切换的开销。如果移动11个文件,就需要调用11次system(),每次都会产生这样的开销,这可能累积起来影响效率。而直接使用Shell脚本移动文件,Shell本身是一个解释器,会在单次进程中执行所有的命令。
2025-03-18 20:39:40
849
原创 关于 2>/dev/null 的作用以及机理
每个进程都有三个标准文件描述符:stdin(标准输入)、stdout(标准输出)和stderr(标准错误)。默认情况下,stderr会输出到终端。使用2>可以将stderr重定向到其他地方,比如文件或者设备文件。/dev/null作为一个字符设备,所有写入它的数据都会被丢弃,不会保存在任何地方,因此执行命令时产生的错误信息就不会显示出来,也不会保存在日志文件中。>/dev/null# 将错误信息记录到日志文件是将标准错误(stderr,文件描述符2)重定向到指定的日志文件。
2025-03-18 20:22:54
277
原创 shell 脚本编写 -x 总结
验证用户输入、API 返回值是否有效。:加载配置、执行脚本前验证文件存在。:API 调用、外部服务交互。:多程序部署、功能开关控制。:日志分析、错误码解析。:权限敏感操作前验证。:缓存清理、版本验证。:数据验证、输入过滤。
2025-03-18 19:29:04
279
原创 查看某一引脚电平
导出的引脚默认方向是输入还是输出是不确定的,因此你需要设置它。对于读取引脚状态,你需要将其设置为输入。文件用于向系统请求导出(即启用)某个特定的GPIO引脚,而不是用于读取引脚的状态。文件写入GPIO引脚的编号(通常是数字,比如。文件并不能直接获取GPIO引脚的高低电平。文件中读取引脚的高低电平了。记得在使用完GPIO引脚后,可以通过。在Linux系统中,通过。
2025-02-13 22:04:37
185
原创 如何通过挂载debugfs来访问内核调试信息
用户可以直接读写这些文件来查看或修改内核状态(如调整日志级别、触发特定操作)。:允许内核模块或子系统在 DebugFS 中创建虚拟文件或目录,暴露调试信息。:标准挂载点路径(也可自定义,但此路径为 Linux 约定俗成)。:默认只有 root 用户可访问 DebugFS,普通用户需通过。:DebugFS 可能暴露敏感内核信息,:指定文件系统类型为 DebugFS。:查看设备寄存器、DMA 缓冲区状态。:无需物理设备,因为是虚拟文件系统。:操作 GPIO、I2C 设备。:统计中断频率、调度延迟。
2025-02-13 22:00:19
375
原创 为什么要分为大端和小端
地址: 0x00 0x01 0x02 0x03。数据: 0x78 0x56 0x34 0x12。1.大端序 0x12345678。2.小端序 0x12345678。
2025-01-09 20:12:06
194
原创 为什么256M的flash能够使用的不到256M?
计算机内部计算方式为 1GB =1024MB =1024*1024 KB=1024*1024*1024B。生产厂家计算方式为 1GB =1000MB =1000*1000 KB=1000*1000*1000B。烧录工具在设置分区时可能会对分区起始地址或大小进行对齐(如按 4KB 或 64KB 块对齐)。2.一般情况下,文件系统默认预留 5% 的空间给超级用户和文件系统管理。3.Flash 上存在坏块,文件系统会跳过这些块,减少可用空间。分区之间可能有间隙,导致部分空间未被实际使用。
2025-01-09 19:54:45
103
原创 设备树参数及其意义
设备树的必要属性因设备类型而异。compatible是设备树中最关键的属性之一,几乎所有设备节点都需要定义它。其他属性如reggpiosinterrupts等则根据具体的设备功能需求而定。如果设备依赖时钟、引脚控制等资源,相关属性也是必需的。
2024-11-19 19:22:41
650
原创 linux-----内核(Kernel)与文件系统(File System)
内核提供了对文件系统的管理和操作接口,通过VFS为不同类型的文件系统提供统一的访问方式,管理文件的权限、缓存、挂载等,从而实现了数据的存取、管理和保护功能。内核中有一个称为虚拟文件系统(Virtual File System, VFS)的层,它为不同的文件系统(如ext4、NTFS、FAT、Btrfs等)提供了。与硬件设备通信,提供统一的接口,使得不同硬件设备可以通过相同的方式与操作系统交互。,从而使得这些设备上的数据可以通过统一的文件系统接口访问。的创建、调度、终止等操作,并管理进程之间的通信。
2024-08-29 23:00:46
875
原创 linux---------epoll
是 Linux 内核提供的一种高效的 I/O 事件通知机制,用于处理大量并发的文件描述符(文件、套接字等)。与传统的 I/O 多路复用机制(如。提供与事件相关的附加数据(如文件描述符)。通过检查这些信息,应用程序可以高效地处理 I/O 事件。函数来管理文件描述符的注册、修改或删除。具有更好的性能和扩展性,特别是在处理大量文件描述符时。该函数返回一个文件描述符,用于后续的。指示发生的事件类型,
2024-08-27 22:53:20
456
原创 嵌入式--设备树&驱动
设备树和驱动程序的关系是紧密互补的。设备树负责描述硬件信息,驱动程序根据这些信息进行初始化和控制硬件。设备树的引入提高了嵌入式系统的灵活性、可移植性和开发效率,使得操作系统能够适应不同的硬件配置,而无需修改内核代码。这种架构在现代嵌入式Linux系统中被广泛应用。
2024-08-21 21:32:25
876
原创 嵌入式软件学习--linux(1)
echo $PATH 查看环境变量。若在,可执行;若不在,1.将当前路径添加到环境变量 2.将文件移动到环境变量的路径中。
2024-04-28 20:45:37
332
原创 linux 内存满了无法训练 如何查看内存占用
如此可找到占用较大的文件路径,删除即可。会显示当前路径下各个文件的内存占用。会显示当前路径下的总内存占用。
2024-01-03 10:10:29
391
原创 报错记录 pip3 无法下载 subprocess.CalledProcessError: Command ‘(‘lsb_release‘, ‘-a‘)‘ returned non-zero ex
将查找出来的文件 复制到报错处位置。
2023-12-12 10:52:53
730
原创 错误记录 apt --fixed-broken install
1.报错 E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).无法直接运行apt --fix-broken install解决 直接报错 没有输入y那个步骤。无法直接使用 sudo apt-get remove。解决方式 更换源 以前使用的是华为源 换成阿里源。无法使用 sudo dpkg -r 删除。查了很多解决方式无法解决。
2023-12-12 10:37:20
1837
1
原创 AscendCL--数据预处理---CANN应用开发
1.数据预处理概述AIPPDVPP:数字视觉预处理当前对外提供了5个功能模块,分别是: 视频编码模块 (VENC),视频解码模块(VDEC),JPEG图片编码 (PEGE) ,JPEG图片解码 (JPEGD)视觉预处理模块 (VPC)其中,视频解码模块提供对H.264/H.265格式视频的解码功能,对输入的视频码流进行解码并输出图片可用于视频结构化等场景;与之相对应的,视频编码模块可将原始YUV数据帧编码成H.264/H.265格式的视频流,用于直接展示等场景。
2023-12-08 15:43:14
713
原创 AscendCL--运行资源管理
device context stream创建销毁顺序。销毁 stream context device。device context stream 关系。创建 device context stream。
2023-12-07 09:19:35
120
原创 结构体和对象在内存中的布局
内存对齐 提高访问效率内存对齐规则:1.数据的起始地址必须是其自身大小的整数倍2.结构体和对象的对齐值是其成员中占用内存最大的数据类型的大小。
2023-12-01 09:39:28
306
原创 linux系统编程--文件描述符
O: output,输出),对文件进行相应操作(open()、close()、write() 、read()等)。所以在程序运行起来后每个进程都会有一张文件描述符的表,标准输入、标准输出、标准错误输出设备文件被打开,对应的文件描述符0、1、2记录在表中。打开现存文件或者新建文件,系统 (内核)会返回一个文件描述符,用来指定已打开的文件,相当于一打开文件的标号。在程序运行起来后打开其他文件时,系统会返回文件描述符表中最小可用的文件描述符,并将此文件描述符记录在表中。持续更新............
2023-11-30 17:57:16
96
原创 C语言必备知识--函数返回局部变量
1. 不能以局部变量的方式创建字符串数组的首地址2.如果函数的返回值非要是一个局部变量的地址,那么该局部变量一定要申明为static类型3.返回指向字符串常量的指针4.数组不能作为函数返回值5.在函数中可以返回局部变量的值,但是不能返回局部变量的地址6.可以返回堆内存的指针。
2023-11-30 17:48:32
642
原创 嵌入式常见协议---IIC协议
全称 Inter-Integrated Circuit ,字面意思是集成电路之间,是I²C BUS简称,中文应该叫集成电路总线,是一种串行通信总线(同步串行半双工),使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。应答信号为低电平则为有效应答位(ACK简称应答位),表示成功接收该字节;总结:在 I2C 通信中,主设备主动控制通信的开始和结束,以及数据的读取和写入。:当SCLK时钟信号一直处于高电平状态时,SDA线由低电平跳变到高电平这个动作,表示结束信号。
2023-11-28 17:03:51
590
原创 MindStudio学习记录三:推理应用开发 acl mindx sdk
可视化模块化设计中间的图片与处理 是基于AIPP的可视化处理 profiling性能分析将图片转成bin文件· 不涉及动态batch 所以将-1改为1配置流程化完成工程搭建 图片解码 图片缩放 图片的裁剪 图片推理 .
2023-11-27 09:41:50
327
原创 MindStudio学习记录二:训练模型开发
1.训练模型开发流程2.训练模型开发3.训练脚本迁移 三个工具包3.1TensorFlow GPU2Ascend3.2 PyTorch GPU2Ascend3.3MindConverter3.4训练可视化总结:
2023-11-25 11:59:53
82
原创 交叉编译安装时报错 ./install.sh: 15: ./install.sh: Bad substitution
【代码】交叉编译安装时报错 ./install.sh: 15: ./install.sh: Bad substitution。
2023-11-23 19:14:40
224
原创 SD3403/SS928 视频采集调试记录
问题1:运行 ./sample_vio 0 报错。问题2:板卡连接摄像模组后无法ping同。下一步 外接显示屏查看输入输出 ...错误原因: 摄像头模组连接错误。
2023-11-22 09:55:10
287
原创 hisi芯片常见专有名词总结SVP MPP NNIE ACL
络,如 Alexnet、VGG16、Googlenet、Resnet18、Resnet50 等分类网络,Faster RCNN、YOLO、SSD、RFCN 等检测网络,以及 SegNet、FCN 等场景分割网络。本文档描述 HiMPP 媒体处理软件的各个 API 的使用方法,以及相关的数据结构和错误。应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。阅媒体处理软件开发包的各种参考信息,包括 API、头文件、错误码等。成了代码编辑、编译、调试、执行、画框、相似度比对等功能,具体参考 5。
2023-11-21 14:39:21
1012
原创 SD3403/SS928 烧录 Uboot Kernel Rootfs是什么
内核是操作系统的核心部分,负责管理计算机的硬件和软件资源,为用户空间进程提供支持和服务. 但是内核本身并不包含用户空间进程,用户空间进程需要通过文件系统来获取执行文件和相关资源。Boot(Universal Boot Loader),即通用Bootloader,是用来引导启动内核的,它的最终目的就是从flash中读出内核,放到内存(SDRAM)中,启动内核。根文件系统之所以在前面加一个“根”,说明它是加载其它文件系统的“根”,那么如果没有这个根,其它的文件系统也就没有办法进行加载的。
2023-11-21 11:11:18
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人