毕业设计之wifi视频监控小车(六)

本文记录了解决基于s3c2440板子上的程序内存泄漏问题的过程,通过使用valgrind定位到了jpeg库文件中的具体问题,并最终修复。

    第六篇说我遇到的一个问题吧,在写这篇文章的时候并没有找到怎么解决,如果有大佬看到了也希望大佬看看给我点意见或者问题处在哪里,先谢过大佬们了。首先说问题吧,板子是s3c2440,内存只有64M,然后跑我这个程序,只能跑20分钟不到就会出现OOM,一开始我其实很蒙蔽的,不知道怎么办,然后用其他大佬说的查内存泄漏软件valgrind查了,然后出现了这样的结果:

我看到这些消息,居然有点蒙,矛头指向了jpeg库文件里面,因为send_picture里直接调用的是rgb_to_jpeg了,然后rgb_to_jpeg里面是这样的:

基本是按部就班的操作,然后是send_picture里面是这样的:

感觉问题也不大呀,然后照着valgrind给出的那些文件去查,行数也给了,直接跳去看,然后就跟valgrind说的一样的最后找到了jdatadst.c这个源文件里的131行,具体情况是这样的:

然后我就不知所措了,不知道从何处入手,然后我又换了一个jpeg9c的库,发现也是这个问题,源文件上面那一行只是加了个malloc的返回类型,然后问题就是这个了,我也不知道是不是我的程序其他部分的问题,但是valgrind是这样报的,我也不知道改怎样改,我也看了我其他部分的代码,我感觉是没有内存泄漏的地方,代码在第三篇,希望有大佬看到的话帮我解惑一下,虽然说能跑10多分钟对毕设演示影响不大,但是这个问题我觉得我不能逃避,有大佬帮忙的话就很感谢了,如果我解决了我会继续分享给大家,这篇先到这里吧。


前段时间一直在忙着写论文,论文基本写完了,今天突然想起了这个问题,然后又重复看我的代码以及jpeg库操作的步骤,终于发现了问题,嗯,很幸运,就一句代码的问题,问题解决了,在上面源代码中jpeg_mem_dest上面我想到我空了一行,我在想我当初为什么空了这一行,然后又看了下操作步骤,没错,这里少写了一行,就是给jpeg_size赋一个初始的值,大小是分辨率乘以位数除以3 相比较我的就是jpeg_size = 320*240*24/3 ;然后我重新用valgrind检测了下,问题解决了,在板子上运行还没试,这是测试结果:

从结果来看,问题已经解决了,很幸运,今天灵感突然来了,可能是当时比较迷糊吧。希望大家不要和我有一样的情况出现(哭),也只有我这么马虎然后出问题,hah,就到这里。

Wifi遥控小车使用说明: 本例程采用ESP8266 wifi模块与STM32串口连接,并提供AT指令封装库与STM32通讯,实现如下的通讯方式: 1、硬件部分 Wifi模块丝印图即引脚如下: 硬件连接如下: 2、手机APP部分 APP部分我们采用常用的APP wifi调试软件 ITEAD WIFI,安装完成后打开 如下界面,点击Set up进入设置: 进入后会自动获取到手机的IP,注意手机是连接到一个路由器下的,支持局域网内调试,先设置端口,一般是 8080 然后设置指令,我们使用到了如下红框内的指令,指令协议可以参考工程文件interface.h有如下描述: //指令定义 #define COMM_STOP 'I'//停止 #define COMM_UP 'A'//前进 #define COMM_DOWN 'B'//后退 #define COMM_LEFT 'C'//左转 #define COMM_RIGHT 'D'//右转 指令设置好之后就可以启动服务了,如下点击开始就好了 设置完成后如下,这里记下服务端IP和端口号,我这里是 192.168.31.195,端口 8080 ,然后返回: 3、stm32软件部分 设置完APP软件后,再来修改我们的工程文件,打开工程“wifi遥控小车”,打开main.c文件,修改红框内信息: HOST_NAME和HOST_PORT为手机上面的IP和端口号,SSID为您的路由器名,PSD为路由器密码,修改好后重新编译后下载。 下载完成复位一下,就可以运行了,程序会自动连接手机开启的服务,实现TCP/IP通信,连接成功后,看手机端的设置会有如下提示: 本程序还是用了串口1来输出调试信息,将串口1连接电脑后也会在串口调试助手看到如下信息: 连接成功后即可在如下界面按键,操作小车运行:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值