Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DFS问题
内存泄漏leak
dfs_v1,vnode引用计数只增不减,无法释放的问题
发布于 2025-07-23 12:30:18 浏览:23
订阅该版
我在使用RTT V5.1.0,DFSV1组件,在shell中执行cat /logs/ulog.log查看日志,每执行一次,ref引用计数就加1,如下图:  执行一次cat指令后:  cat指令的代码如下: ```c void cat(const char *filename) { struct dfs_file fd; int length = 0; char buffer[81]; fd_init(&fd); if (dfs_file_open(&fd, filename, O_RDONLY) < 0) { rt_kprintf("Open %s failed\n", filename); return; } do { rt_memset(buffer, 0x0, sizeof(buffer)); length = dfs_file_read(&fd, (void *)buffer, sizeof(buffer) - 1); if (length > 0) { buffer[length] = '\0'; rt_device_t out_device = rt_console_get_device(); rt_device_write(out_device, 0, (void *)buffer, sizeof(buffer)); } } while (length > 0); rt_kprintf("\n"); dfs_file_close(&fd); } FINSH_FUNCTION_EXPORT(cat, print file); ``` 使用dfs_file_open()打开文件,读取数据,之后关闭文件,open函数里会对vnode引用计数加一,close()函数中却没有对vnode引用计数减一,计数减一的代码在dfs_posix.c中的close()函数里,代码如下: ```c int close(int fd) { int result; struct dfs_file *d; d = fd_get(fd); if (d == NULL) { rt_set_errno(-EBADF); return -1; } result = dfs_file_close(d); fd_release(fd); if (result < 0) { rt_set_errno(result); return -1; } return 0; } RTM_EXPORT(close); ``` 执行fd_release(fd)释放文件描述符,同时对vnode的引用计数减一。就代码来看,通过posix接口重复打开文件没有问题,引用计数能正常增加减少,而cat指令越过了posix直接使用dfs的接口,从而导致了这个问题。
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
23
关于作者
未知客
这家伙很懒,什么也没写!
提问
12
回答
7
被采纳
1
关注TA
发私信
相关问题
1
AT设备驱动中隐藏的内存泄漏
2
重复调用指定函数导致内存泄漏。
3
sqlite软件包内存泄漏
4
at socket导致内存泄露问题
5
请教下各位大佬,rtt里面判断内存泄露可以使用什么工具
6
求助 RTT1.20 + Lwip1.41 刷helloWorld 网页出现内存泄露
7
内存泄露导致崩溃的问题
8
CMUX部分是否有内存泄漏?
9
paho mqtt和mymqtt的内存泄露问题
10
ec200x内存泄漏
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RSOC25】Day5 课程笔记:软件包相关知识
2
RT-Thread 夏令营 第五天笔记
3
【RSOC25】Day5 课程笔记:软件包和网络组件
4
【RSOC25】Day4 课程笔记:I/O设备和驱动框架
5
【RSOC25】Day3 课程笔记:线程间同步和通信
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
cubemx
I2C_IIC
UART
WIZnet_W5500
BSP
ESP8266
PWM
ota在线升级
packages_软件包
flash
freemodbus
GD32
潘多拉开发板_Pandora
编译报错
ADC
keil_MDK
flashDB
rt_mq_消息队列_msg_queue
ulog
socket
MicroPython
msh
中断
Debug
SFUD
at_device
SDIO总线
本月问答贡献
Ryan_CW
2
个答案
3
次被采纳
D1sguIse_
6
个答案
2
次被采纳
用户名由3_15位
6
个答案
1
次被采纳
三世执戟
4
个答案
1
次被采纳
xiaorui
2
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部